检查$ id =列值,否则

时间:2012-10-10 11:27:42

标签: php mysql

我想检查列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);
}

但现在代码不会做任何事情,我知道这两个查询都可以正常工作,但是当我从locatie中选择时它不会....

任何帮助将不胜感激

6 个答案:

答案 0 :(得分:2)

您可以简单地使用:

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

正在检查查询中已有的id

由于您没有检查是否有有效的结果检查,我将其添加到if中。

注意:不推荐使用所有mysql *函数,而是使用pq函数的mysqli。

答案 1 :(得分: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)";

答案 2 :(得分: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 {

}

答案 3 :(得分:1)

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

答案 4 :(得分:1)

如果您使用 REPLACE ,则无需执行任何 id 检查。

例如:

REPLACE INTO locatie (id, longitude, latitude, timestamp) VALUES (?,?,?,?)

详细说明: http://dev.mysql.com/doc/refman/5.0/en/replace.html

答案 5 :(得分:0)

您可以使用该方式的查询

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

仅当资源不为空时才会返回true。