2012-09-06 19 views
0

所以我想:更新值,如果值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

如果給出的答案沒有提供足夠的信息,使用的意見,要求更多的反饋,不只是發佈一個新問題 –

回答

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

第二行代碼中的某處是語法錯誤。似乎可以找到它。你看到了嗎? –

相關問題