我在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注入?