更新值,如果值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));
}
}
?>
我到底做错了什么?
你准备有: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));
好吧,我看到,我改变了这一切还可以,但它不更新... –
请参阅编辑 - 您将ID和电话号码混淆,但您可以在一个简单的查询中完成所有操作,而不是两个。 – Robbie
第二行代码中的某处是语法错误。似乎可以找到它。你看到了吗? –
如果给出的答案没有提供足够的信息,使用的意见,要求更多的反馈,不只是发布一个新问题 –