如果value1 == row1则更新值,否则不更新

时间:2012-09-06 07:24:55

标签: php mysql json if-statement

所以我想:

  • 查看输入的电话号码是否等于数据库中的电话号码。如果是这样,那么必须保持电话号码相同,只更新:经度,纬度&时间戳。
  • 如果电话号码等于null。不要把任何值放在我的 数据库。根本没有记录。
  • 如果电话号码不在数据库中,也什么都不做。重复 就像值为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));
 }
}

?>

我做错了什么?

1 个答案:

答案 0 :(得分: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));