• 梦想还是要有的,万一实现了呢...
  • 区块链论坛整装待发...

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

MySQL Vetrue 8个月前 (04-30) 373次浏览 0个评论 二维码链接

案例:

$domain = "domain  is 'vetrue.com'";//变量中含有‘引号 号这样的 的特殊符号

$db->query("INSERT INTO `table` (`id`, `domain`) 
         VALUES (null, '$domain'");
//这样的话就会导致最终执行的 SQL 语句为 INSERT INTO `table` (`id`, `domain`)   VALUES (null, 'text is 'vetrue.com'')
//PHP 自定义变量中含有单引号未转义自然会在执行 SQL 语句的时候发生错误

解决办法

使用 PHP 自带函数 htmlspecialchars()

$domain = "domain is 'vetrue.com'";
addslashes($domain);//单引号会被转义
$db->query("INSERT INTO `table` (`id`, `domain`) 
         VALUES (null, '$domain'");

再需要输出的时候可以使用 stripslashes()函数把转义的字符串恢复


PHP 还有个两个类似的函数

strip_tags() :去除 HTML 标签

htmlspecialchars() 把 HTML 标签转换为 HTML 实例

htmlspecialchars 和 strip_tags 二者之间的区别是一个是删除掉 HTML 标签,一个是将 html 标签转换为其他字符。


喜欢 (1)
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址