我有一个查询,要求用户在我的应用程序中创建一个关注者/关注者:
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');
}
任何帮助都将不胜感激。
答案 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.php和 http://php.net/manual/en/function.mysql-num-rows.php
答案 1 :(得分:1)
您可以选择计数以查看记录是否已存在
SELECT count(*) FROM following WHERE idUser = <id> AND followingID = <followingId>
如果计数大于零,则存在关系。
答案 2 :(得分:1)
如果您为IdUser
和followingId
定义了唯一索引,则可以使用REPLACE
代替INSERT
来更新它而不是插入新的索引。
答案 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虽然关系是假的。