PHP+MySQL where子句语法错误


PHP+MySQL wrong syntax in where clause

这是我的查询

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

我已经尝试了各种反引号和单引号的配置。每次我看到这个

Error: SQL语法错误;查看与MySQL服务器版本对应的手册,在第1行'CALL = LZ1IRQ'附近使用正确的语法

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

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

CALL是MySQL的保留关键字。我认为你不能像现在这样使用这个关键词。请参阅保留关键字的官方列表。

如果你需要使用保留键,那么你应该用反号把它括起来。

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

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

将查询改为

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

试试这个

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