1

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

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

任何帮助,将不胜感激。

4

5 回答 5

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
}

注意:函数 mysql_query 和 mysql_num_rows 自 PHP 5.5.0 起已弃用。因为我很久以前用php写过代码,所以我现在就记住了这些。替代你可以在 php 网站上找到。但是这些功能仍然有效。 http://php.net/manual/en/function.mysql-query.phphttp://php.net/manual/en/function.mysql-num-rows.php

于 2013-08-06T20:58:19.880 回答
1

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

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

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

于 2013-08-06T20:54:29.667 回答
1

如果你定义了一个唯一索引IdUserfollowingId你可以使用REPLACE而不是INSERT更新它而不是插入一个新的。

HTH(希望有帮助)

于 2013-08-06T20:54:50.380 回答
1

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

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

如果查询返回“1”,则两者中的某个人已经在关注另一个。

于 2013-08-06T20:56:05.407 回答
0

如果关系已经存在,我将使用 num_rows 函数返回。我建议使用这个函数的 mysqli 版本,因为 mysql_* 命令正在慢慢被弃用,但是无论如何这里是它的链接。

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

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

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

于 2013-08-06T20:56:20.587 回答