更新值,如果值1 == ROW1,否则不

更新值,如果值1 == ROW1,否则不

问题描述:

所以我想:更新值,如果值1 == ROW1,否则不

  • 如果外观,进来的电话号码等于在数据库中的电话号码。如果是,则必须保持电话号码的值相同,只更新:经度,纬度&时间戳。
  • 如果电话号码等于空。不要在我的 数据库中输入任何值。根本没有记录。
  • 如果电话号码不在数据库中,也什么也不做。重复 它就像值为空。

,我从输入得到的电话号码被称为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)); 
} 
} 

?> 

我到底做错了什么?

+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)); 
+0

好吧,我看到,我改变了这一切还可以,但它不更新... –

+0

请参阅编辑 - 您将ID和电话号码混淆,但您可以在一个简单的查询中完成所有操作,而不是两个。 – Robbie

+0

第二行代码中的某处是语法错误。似乎可以找到它。你看到了吗? –