所以我正在使用 PHP/MySQL,并且我有一个包含以下字段的 tbl_profile 表:
loginid, venueTitle, description, address, long, lat.
当我说我已经测试并且更新和检索除 long 和 lat 之外的每个字段的数据时没有问题时,您必须相信我。 long 和 lat 字段的类型为 double 并且通过 phpmyadmin 提供的 GUI 我已经能够插入值然后检索该信息但是由于某种原因当我尝试使用 UPDATE 查询时我似乎无法让它做任何事情.这里有两个查询,第一个有效,第二个导致 NOTHING 被更新。我打印出 $longitude 和 $latitude 只是为了仔细检查值是否正确并且它们打印正确。我什至将它们转换为 doubleval 以尝试确保它们与表中的字段类型相同。有任何想法吗?我假设经度和纬度没有被识别为与表中相同的类型,但我不知道为什么会这样。
$sql = "UPDATE tbl_profile SET venueTitle='$v', description='$d', address='$a' WHERE
loginid='$username'"; // this query works
$longitude = doubleval($north);
$latitude = doubleval($east);
$sql = "UPDATE tbl_profile SET venueTitle='$v', description='$d', address='$a', long
='$longitude', lat='$latitude' WHERE loginid='$username'"; // doesn't work
最佳答案
long
是 reserved word在 MySQL 中。使用 mysql_error()
会在 long='<longtitude value>'
指出您的问题.
要么更改您的列名,要么在查询中将它们用反引号括起来,例如
UPDATE tbl_profile SET `long` = something ...
此外,您的代码似乎对 SQL 注入(inject)开放。我会认真考虑切换到 PDO 并使用带有绑定(bind)参数的准备好的语句。
关于PHP/MySQL 无法更新 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6181600/