2012-10-10 36 views
1

我想檢查$ id是否已經存在於列ID中。 如果它是我想要調用查詢,否則我想要做另一個查詢。

似乎很容易,但不適合我。

這裏是重要的代碼

if (isset($_GET['data'])) { 
$data = json_decode($_GET['data'], true); 
$id = $data['id']; 
$latitude = $data['latitude']; 
$longitude = $data['longitude']; 
$timestamp = $data['timestamp']; 

$result = mysql_query("SELECT * FROM locatie WHERE id='$id'"); 
if("id='$id'") 
{ 
$query = "Update locatie 
SET  longitude = '$longitude', 
    latitude = '$latitude', 
    timestamp = '$timestamp' 
WHERE id = '$id'";} 
else 
//Als het nummer bekend is 

{ 
//Als het een nieuw nummer is 
$query = sprintf("INSERT INTO locatie (id, longitude, latitude, timestamp) VALUES ('%s', '%s', '%s', '%s') ", mysql_real_escape_string($id) , mysql_real_escape_string($longitude), mysql_real_escape_string($latitude), mysql_real_escape_string($timestamp));} 



$result = mysql_query($query) or die('Query failed: ' . mysql_error()); 
echo "OK"; 

// Free resultset 
mysql_free_result($result); 
} 

但現在的代碼不會做任何事情,我知道,這兩個查詢的正常工作seperatelym但不是當我選擇從locatie ....

任何幫助將理解

+0

那是什麼? 'if(「id ='$ id'」)' –

+0

'if(「id ='$ id'」)'你在哪裏獲取id的結果? –

+0

我不知道該怎麼做... –

回答

1

mysql_num_rows()取得結果的行數 http://in2.php.net/manual/en/function.mysql-num-rows.php

if($result && mysql_num_rows($result)>0){ 
    //$id already exist in the column id. 

}else { 

} 
+0

謝謝,這對我很有用! –

+0

將在10分鐘內接受這個 –

+1

如果在您的SELECT和INSERT的執行之間另一個過程插入了您要查找的ID?這會失敗,當你最不期待的時候,去INSERT ... ON DUPLICATE KEY UPDATE路由。如果您不想更新,只需插入並查看是否因重複密鑰而出現錯誤,然後執行替代查詢。不要選擇並根據此信息採取行動。 – Sven

2

你可以簡單的使用:

if($result && mysql_num_rows($result))

,因爲您正在查詢中已經檢查了id

由於您不檢查是否有有效的結果檢查,我添加了,如果太。

注意:所有的mysql *函數都不推薦使用,而是使用pdo函數的mysqli。

1
$result = mysql_query("SELECT * FROM locatie WHERE id='$id'"); 
if(mysql_num_rows($result) > 0) 
//do something 
2

看到,因爲要更新,如果它存在,或插入,如果它不,你可以使用INSERT ... ON DUPLICATE KEY UPDATE

例(應該工作但未經測試)

$sql = sprintf("INSERT INTO locatie (id, longitude, latitude, timestamp) VALUES ('%s', '%s', '%s', '%s') ", mysql_real_escape_string($id) , mysql_real_escape_string($longitude), mysql_real_escape_string($latitude), mysql_real_escape_string($timestamp)); 
$sql .= " ON DUPLICATE KEY UPDATE longitude=VALUES(longitude), latitude=VALUES(latitude),timestamp=VALUES(timestamp)"; 
0

您可以使用這種方式

if($result = mysql_query("SELECT * FROM locatie WHERE id='$id'")) 
{ 
    // Found 
} 
else 
{ 
    // Not found 
} 

只有在資源不爲空,它將返回true查詢。