Mysql sql命令为什么显示错误?

Mysql sql命令为什么显示错误?,mysql,sql,Mysql,Sql,为什么??如何更正?示例$products\u name contains'符号的值,因此sql查询出错 目前,您的部分查询可能是这样的 。。。(左('Bug's Life“Multi-Pak”特别2003收藏家版,10) 请注意,g和s之间的“结束”第一个撇号和$products_名称的其余部分在已执行查询中不是字符串值 你应该使用预先准备好的语句。你还应该用谷歌搜索“sql注入攻击”来查找你当前代码的漏洞 编辑:您可以使用 mysqli: PDO: 我个人更喜欢PDO。原因请参见。您需要

为什么??如何更正?

示例$products\u name contains'符号的值,因此sql查询出错

目前,您的部分查询可能是这样的

。。。(左('Bug's Life“Multi-Pak”特别2003收藏家版,10)

请注意,g和s之间的“结束”第一个撇号和$products_名称的其余部分在已执行查询中不是字符串值


你应该使用预先准备好的语句。你还应该用谷歌搜索“sql注入攻击”来查找你当前代码的漏洞

编辑:您可以使用

  • mysqli:
  • PDO:

我个人更喜欢PDO。原因请参见。

您需要在$product name上使用mysql\u real\u escape\u string()。该错误的原因是“'”,mysql\u real\u escape\u string()将修复该错误。在将所有变量发送到mysql之前,您应该始终过滤它们,否则您将面临通过恶意sql代码注入mysql的风险。

您应该使用事先准备好的声明?我该怎么做?谢谢you@dreamchaser我用代码示例的链接更新了答案。
$categories_query ="SELECT p.products_id 
,  p.products_quantity
, p.products_price 
, p.products_status 
,p.products_image
, pd.products_name

FROM products_description AS pd
INNER JOIN products AS p
ON p.products_id = pd.products_id
WHERE  p.products_status = 1 and p.products_id <> $pid and pd.products_name LIKE CONCAT(LEFT('$products_name',10),'%')";
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 's Life "Multi Pak" Special 2003 Collectors Edition',10),'%')' at line 11
in:
[SELECT p.products_id...