2012-10-10 4 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에서 선택하지 않는 경우 알고

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

: 당신은 간단하게 사용을 할 수
+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 ... DUPLICATE KEY UPDATE 라우트로 가면 실패 할 것입니다. UPDATE를 원하지 않는다면 단순히 INSERT를하고 중복 키로 인해 오류가 발생하는지 확인한 다음 대체 쿼리를 수행하십시오. 이 정보를 선택하지 마십시오. – Sven

2

을 알 수있다

이미 쿼리에 id에 대한 확인을하고 있습니다.

유효한 결과가 있는지 확인하지 않으므로 if를 if에 추가했습니다.

참고 : 모든 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

당신은 자원이 null이 아닌 경우에만 방법

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

그것은 true를 돌려줍니다 쿼리를 사용할 수 있습니다.

관련 문제