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);
}

但是现在代码不会做任何事情,我知道这两个查询都可以单独工作,但当我从 SELECT From locatie... 时就不行了。

任何帮助,将不胜感激

4

6 回答 6

2

您可以简单地使用:

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

因为您正在检查查询中的id已经存在的。

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

注意:所有 mysql* 函数都已弃用,请改用 pdo 函数的 mysqli。

于 2012-10-10T11:29:30.360 回答
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)";
于 2012-10-10T11:33:45.903 回答
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 {

}
于 2012-10-10T11:30:15.237 回答
1
$result = mysql_query("SELECT * FROM locatie WHERE id='$id'");
if(mysql_num_rows($result) > 0)
//do something
于 2012-10-10T11:31:46.187 回答
1

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

例如:

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

详情: http ://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2012-10-10T11:56:39.843 回答
0

您可以这样使用查询

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

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

于 2012-10-10T12:30:57.843 回答