PHP解析错误:sql语句的语法错误


PHP parse error: syntax error for sql statement

我在PHP中导致语法/解析错误的SQL语句下面的行有什么问题?很简单的问题,但我真的很感谢你的回答。

$sql = "SELECT * FROM my_table WHERE column1 = '$_POST["my_value"]'";

错误如下:"解析错误:语法错误,意外的' ' ',期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)"。我根据错误更改了代码(例如,将$_POST中的"更改为"或删除它),但再次收到错误。提前感谢您的帮助

您使用的语法确实不正确。下面是修复语法的一些选项:

$sql .= " column1 = '$_POST[my_value]'";
$sql .= " column1 = '{$_POST["my_value"]}'";

查看PHP文档中关于字符串插值的更多信息。

但是,请注意,使用此代码可能会受到SQL注入攻击。如果用户输入文本' AND column1 = (DELETE FROM other_table) AND '会怎样?你的查询变成:

SELECT * FROM my_table WHERE column1 = ''
AND column1 = (DELETE FROM other_table)
AND ''

这可能对MySQL没有任何作用,但它向您展示了如何允许用户将自己的SQL注入到您的查询中,这可能会让他们做非常糟糕的事情。有关本主题的进一步阅读,请参见以下问题:如何在PHP中防止sql注入?