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

PHP+MySQL where子句中的语法错误,php,mysql,Php,Mysql,这是我的问题 $query = "SELECT * FROM ham WHERE Call = $call"; 我已经尝试过使用反勾号和单引号的各种配置。每次我收到这个: 错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“CALL=LZ1IRQ”附近使用的正确语法 “LZ1IRQ”是我通过POST使用HTML表单设置的实际值 $call = mysqli_escape_string($con, $_POST['call']); 将您的查询更改为此 $query

这是我的问题

$query = "SELECT * FROM ham WHERE Call = $call";
我已经尝试过使用反勾号和单引号的各种配置。每次我收到这个:

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

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

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

将您的查询更改为此

 $query = "SELECT * FROM ham WHERE Call = {$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."' ";

我在数据库和查询中将“Call”改为“Callsign”。但现在我在另一个查询中又犯了一个错误$query=SELECT*FROM-ham,其中Callsign=$call;错误1:“where子句”中的未知列“LZ1IRQ”请再次确认您使用了反勾号,而不是单撇号包装:-不客气。很高兴我能帮上忙:-