Php MySql好友请求0行受影响

时间:2016-01-25 11:31:38

标签: php mysql mysqli

当我尝试更新表中的col时,我有问题。

我有桌子,我存储了朋友关系和朋友请求。

朋友表如下所示:

INSERT INTO friends
(friend_one,friend_two)
VALUES
('$user_id','$friend_id');

我使用以下插入语句添加好友。

UPDATE friends
SET status="1"
WHERE
(friend_one="$user_id" OR friend_two="$user_id")
AND
(friend_one="$friend_id" OR friend_two="$friend_id");

所有工作正常但我尝试确认朋友请求更新状态为1返回我0行受影响但查询成功。

确认请求:

friend_one  friend_two  status  
----------  ----------  --------
         2           1  0       

所有时间都是一些人:

  

执行了1个查询,1个成功,0个错误,0个警告

     

查询:UPDATE friends SET STATUS = 1 WHERE(friend_one = 2 OR friend_two =   2)AND(friend_one = 1或friend_two = 1)

     

0行受影响

     

执行时间:0.037秒传输时间:0秒总时间:   0.038秒

我在表格中只有一条记录但从未将状态更改为1:

angular.module('my-app.config', [])
.config(function($ionicConfigProvider) {
    $ionicConfigProvider.views.maxCache(0);
});

4 个答案:

答案 0 :(得分:1)

使用OR运算符代替AND

UPDATE friends
SET status="1"
WHERE
( (friend_one="$user_id" OR friend_two="$user_id")
OR
(friend_one="$friend_id" OR friend_two="$friend_id") );

答案 1 :(得分:1)

这样做:

UPDATE friends
SET status="1"
WHERE
(friend_one="$user_id" AND friend_two="$friend_id") // check the change in line
OR // replace AND with OR
(friend_one="$friend_id" AND friend_two="$user_id");// check the change in line

答案 2 :(得分:1)

嗨,我认为更好的方法是使用独特的友谊ID,如:

friendship_id |  sender_id |    reciever_id |  status

         1           5         6         0

因此,当您发送确认请求时,查询将如下所示

$sql="SELECT friendship_id from friends where sender_id='$sender' and reciever_id='$reciever' OR sender_id='$reciever' and reciever_id='$sender'";
$row=mysqli_fetch_assoc($sql);

然后使用此查询将其发送到确认脚本

$confirm="UPDATE friends SET STATUS=0/1/2 where friendship_id='$row[friendship_id]'";

希望这有效!我愿意讨论!谢谢!

答案 3 :(得分:0)

更改OR运算符而不是AND运算符 试试这个。

UPDATE friends
SET status="1"
WHERE
(friend_one="$user_id" AND friend_two="$friend_id") // check the change in line
OR // replace AND with OR
(friend_one="$friend_id" AND friend_two="$user_id");// check the change in line