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

时间:2014-07-28 21:34:54

标签: php sql

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

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

以下是错误: “解析错误:语法错误,意外''',期待标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)”。我根据错误更改了代码(在$ _POST中更改为'或者删除它例如)但又一次收到错误。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

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

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

有关详细信息,请参阅the PHP documentation on string interpolation

但请注意,使用此代码您将对SQL注入攻击持开放态度。如果用户输入文字' AND column1 = (DELETE FROM other_table) AND '怎么办?您的查询变为:

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

这可能会或可能不会对MySQL做任何事情,但它会告诉您如何允许用户将自己的SQL注入到查询中,这可能会让他们做很糟糕的事情。有关此主题的进一步阅读,请参阅以下问题:How can I prevent SQL-injection in PHP?