2

我在 PHP 的某处写了以下代码:

$sql="UPDATE drivers ".
"SET Location=$lo ".
"WHERE DriverId=$id";

echo $sql;

回声的结果是

更新驱动程序 SET Location=locA WHERE DriverId=3

但是,当我跑步时

$result = mysqli_query($con2,$sql);
echo $result;
echo mysqli_error($con2);

我明白了

“字段列表”中的未知列“locA”

为什么我得到 'locA' 而不是 Location 作为列名?

4

4 回答 4

3

locA 是一个字符串,需要加引号。

$sql="UPDATE drivers ".
"SET Location='$lo' ".
"WHERE DriverId=$id";

您应该考虑使用 PDO 和准备好的语句来为您进行引用。

于 2013-08-28T20:55:16.303 回答
2

你需要放在$lo单引号内:

$sql="UPDATE drivers ".
"SET Location='$lo' ".
"WHERE DriverId='$id'";
于 2013-08-28T20:54:45.993 回答
1

至少你必须

$sql="更新驱动程序"。“设置位置='$lo'”。"WHERE DriverId=$id";

但是转到 mysqli 并改用准备好的语句。如果你按照我的建议去做,那么你对 SQL 注入持开放态度。

于 2013-08-28T20:55:19.037 回答
1

MySQL 正在尝试将 locA 评估为字段,因为它不是字符串值。尝试更多类似的东西:

$sql="UPDATE drivers ".
"SET Location='".$lo."' ".
"WHERE DriverId=$id";

这应该导致:

更新驱动程序 SET Location='locA' WHERE DriverId=3

正如其他人所提到的,PDO 和准备好的声明将是可行的方法。

于 2013-08-28T20:59:45.673 回答