0

所以我想:

  • 查看传入的电话号码是否等于数据库中的电话号码。如果是这样,它必须保持电话号码相同的值,只更新:经度、纬度和时间戳。
  • 如果电话号码等于 null。不要将任何值放入我的数据库中。根本没有记录。
  • 如果电话号码不在数据库中,也不做任何事情。重复它,就像值为空一样。

我从输入中获得的电话号码称为phonenumber。并且该行称为id

这是我的代码:

 <?php



$db = new PDO('mysql:host=host;dbname=dbname;charset=UTF-8', 'user', 'pass',   array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

if (isset($_REQUEST['data'])){
$data = json_decode($_REQUEST['data']);
$stmt = $db->prepare("SELECT `id` FROM `locatie` where `phonenumber`=:id");
$stmt->execute(array(':phonenumber' => $data->id));
$row_count = $stmt->rowCount();
if($row_count && ($data->phonenumber != '')){
    $stmt = $db->prepare("UPDATE `locatie` SET `longitude`=:longitude,  `latitude`=:latitude, `timestamp`=:timestamp WHERE `phonenumber`=:id");
    $stmt->execute(array(':longitude' => $data->longitude,':latitude' => $data- >latitude,':timestamp' => $data->timestamp,':phonenumber' => $data->id));
 }
}

?>

我究竟做错了什么?

4

1 回答 1

0

您的准备有:id,但执行参数有:phone_number。这些需要匹配。

编辑:实际上,你可以做一个简单的更新——如果电话号码不存在,那么它就不会改变。一个查询,而不是两个。

$stmt = $db->prepare("UPDATE `locatie` SET `longitude`=:longitude,  `latitude`=:latitude, `timestamp`=:timestamp WHERE `id`=:id AND `phonenumber`=:phonenumber"); 
$stmt->execute(array(':longitude' => $data->longitude,':latitude' => $data- >latitude,':timestamp' => $data->timestamp,':id' => $data->id,':phonenumber' => $data->phonenumber)); 
于 2012-09-06T07:27:09.237 回答