PHP / MySQL在更新双精度值时遇到麻烦

问题描述

| 所以我正在使用PHP / MysqL,并且我有一个tbl_profile表,其中包含以下字段: 登录ID,会场标题,描述,地址,长,纬度。 当我说我已经测试过并且从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\',address=\'$a\',long 
=\'$longitude\',lat=\'$latitude\' WHERE loginid=\'$username\'\"; // doesn\'t work
    

解决方法

        
long
是MySQL中的保留字。使用
mysql_error()
可能会指出at3ѭ的问题。 更改列名或将其包装在查询中的反引号中,例如
UPDATE tbl_profile SET `long` = something ...
另外,您的代码似乎可以进行SQL注入。我会认真考虑切换到PDO并使用带有绑定参数的准备好的语句。