PHP + MySQL在where子句中的语法错误

时间:2014-06-20 06:16:47

标签: php mysql

这是我的查询

$query = "SELECT * FROM ham WHERE Call = $call";

我尝试过使用反引号和单引号的各种配置。每次我得到这个:

  

错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“CALL = LZ1IRQ”附近使用正确的语法

'LZ1IRQ'是我通过POST使用HTML表单设置的实际值。

$call = mysqli_escape_string($con, $_POST['call']);

4 个答案:

答案 0 :(得分:2)

CALL是MySQL中的保留关键字。我认为您现在无法使用此关键字。请参阅this保留关键字的官方列表。

如果您需要使用保留密钥,那么您应该将其包装在后面。“

答案 1 :(得分:1)

将您的查询更改为此

 $query = "SELECT * FROM ham WHERE Call = {$call}";

答案 2 :(得分:1)

我可以推断你正在使用mysqli所以最好和最安全的是绑定参数,使用这个解决方案同时阻止sql注入:

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("SELECT * FROM ham WHERE Call =?");
$stmt->bind_param('s', $call);

答案 3 :(得分:0)

试试这个

$query = "SELECT * FROM ham WHERE `Call`  = '".$call."' ";