为什么MySQL正在用值更改列名?

时间:2013-08-28 20:52:54

标签: php mysql

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

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

echo $sql;

回声的结果是

  

UPDATE drivers SET Location = locA WHERE DriverId = 3

然而,当我跑

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

我得到了

  

'字段列表'中的未知列'locA'

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

4 个答案:

答案 0 :(得分:3)

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

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

您应该考虑使用PDO和预备语句来为您做报价。

答案 1 :(得分:2)

您需要将$lo放在单引号中:

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

答案 2 :(得分:1)

至少你必须

$ sql =“UPDATE drivers”。 “SET Location ='$ lo'”。 “WHERE DriverId = $ id”;

但是转到mysqli并使用预备语句。如果你按照我的建议行事,你就可以对SQL注射做广泛了。

答案 3 :(得分:1)

MySQL正在尝试将locA评估为字段,因为它不是字符串值。尝试更像:

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

哪个应该导致:

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

PDO和准备好的陈述将是其他人提到的方式。