以下2个查询是php中回显的结果:
UPDATE glymping_userdata
SET current_location_gps = '51.9171115;4.484812'
WHERE id = 1
和
UPDATE glymping_user_has_appointments
SET status = 'enroute',
start_location_gps = '51.9171115;4.484812'
WHERE userId = 1
AND appointmentId = 47
在数据库中手动输入并且所有字段都正确填充时,两个查询都有效。当我让php文件运行查询时,查询如上所示,但“start_location_gps”和“current_location_gps”为空。
查询中的值是字符串,数据库字段是varchar(30)。然而,数据库中的字段是空的。
从post方法接收位置值。
有谁知道我忘了或做错了什么?
编辑:
php示例
public function SendQuery($query)
{
$results = $this->mysqli->query($query);
return $results;
}
public function UpdateUserLocation($currentLocationGps)
{
$query = "UPDATE ".DB_PREFIX."userdata
SET current_location_gps = '{$currentLocationGps}'
WHERE id = ".$this->userId;
//echo $query;
$this->db->SendQuery($query);
}
答案 0 :(得分:0)
您当前的代码不会检查mysqli_query的返回值;查询可能会“无声地”失败。也可能是因为WHERE子句中的值错误,查询不会影响数据库中的任何记录 尝试使用
if ( !$this->db->SendQuery($query) ) {
// query failed: syntax error, connection lost, access denied,duplicate entries, ...
trigger_error($this->mysqli->error);
}
else {
if ( 0 < $this->mysqli->affected_rows ) {
// WHERE clause doesn't match any record, no values changed, ...
trigger_error('no rows affected');
}
}
您的查询也可能容易进行SQL注入,请查看http://php.net/manual/en/security.database.sql-injection.php