我在PHP下面的SQL语句行导致语法/解析错误有什么问题。非常简单的问题,但我非常感谢你的回答。
$sql = "SELECT * FROM my_table WHERE column1 = '$_POST["my_value"]'";
以下是错误: “解析错误:语法错误,意外''',期待标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)”。我根据错误更改了代码(在$ _POST中更改为'或者删除它例如)但又一次收到错误。在此先感谢您的帮助。
答案 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?