检查是否存在具有给定值的行

时间:2013-08-06 20:50:02

标签: php mysql sql database

我有一个查询,要求用户在我的应用程序中创建一个关注者/关注者:

INSERT INTO following(IdUser,followingID) VALUES('%d','%d')", $id, $followingId

检查两个用户之间的关系是否已经存在的查询是什么?

或者,如何检查两个用户之间的关系是否不存在?

通常,我会在iOS应用程序中返回结果:

    if (!$result['error']) {
    // if no error occured, print out the JSON data of the 
    // fetched photo data
    print json_encode($result);
} else {
    //there was an error, print out to the iPhone app
    errorJson('Follow is broken');
}

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:2)

您必须为此进行交易。

首先执行选择。

SELECT * FROM following where idUser = $id AND followingID = $followingId

现在,如果上面的查询选择了一行或多行,那么就已存在关系,如果没有行(零行)则没有关系。对于这两种情况,请采取相应措施。

确保根据PHP和SQL语法使用查询。如果ID是char或varchar,那么在查询中这些应该用单引号或双引号括起来。

像这样: 如果ID是varchar或char,那么

$query = "SELECT * FROM following where idUser = '".$id."' AND followingID = '". $followingId."'";

如果ID是int或任何其他数字值(根据表格列)

$query = "SELECT * FROM following where idUser = ".$id." AND followingID = ". $followingId."";

还要确保我使用的列名和表名是正确的。

现在让我们先执行查询

$result = mysql_query($query); // this method works but is not preferred. better if insert query here instead of variable $query

现在让我们检查一下它选择了多少行并采取适当的措施。

if(mysql_num_rows($result) > 0){
    //do something here or show error because relation already exists
}
else{
   //relation already do not exists. so you can insert the record here
}

注意:自PHP 5.5.0起,不推荐使用mysql_query和mysql_num_rows函数。因为我很久以前在php中编码,所以我现在记得这些。替代你可以在php网站上找到。但这些功能仍然有效。 http://php.net/manual/en/function.mysql-query.phphttp://php.net/manual/en/function.mysql-num-rows.php

答案 1 :(得分:1)

您可以选择计数以查看记录是否已存在

SELECT count(*) FROM following WHERE idUser = <id> AND followingID = <followingId>

如果计数大于零,则存在关系。

答案 2 :(得分:1)

如果您为IdUserfollowingId定义了唯一索引,则可以使用REPLACE代替INSERT来更新它而不是插入新的索引。

HTH(希望有帮助)

答案 3 :(得分:1)

您可以进行额外的查询以检查两者中是否有任何一个“跟随”另一个或反之亦然:

SELECT 1 FROM following
WHERE
(IdUser = <id> AND followingID = <following id>)
OR
(IdUser = <following id> AND followingID = <id>)

如果查询返回“1”,则两人中的某人已经跟随另一人。

答案 4 :(得分:0)

如果关系已存在,我会使用num_rows函数返回。我建议使用mysqli version of this function,因为mysql_ *命令正在慢慢被弃用,无论如何都是here is the link

为了创建一个将检查它们是否已存在的查询,您将需要使用SELECT语句。

SELECT * FROM following WHERE IdUser = '$id' AND followingID = '$following'

如果你得到1,你会知道这种关系确实发生了,如果你得到一个0虽然关系是假的。