Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果记录不存在则插入,否则使用长查询在mysql中删除_Php_Mysql_Pdo - Fatal编程技术网

Php 如果记录不存在则插入,否则使用长查询在mysql中删除

Php 如果记录不存在则插入,否则使用长查询在mysql中删除,php,mysql,pdo,Php,Mysql,Pdo,我有一个跟踪系统,允许用户相互跟踪。我使用的是PHPPDO,所以它不支持多行查询,而是需要一个长查询。目前我正在使用下面的代码 $query = $db->query("SELECT id FROM follow WHERE user1 = 'kim' AND user2 = 'tim' "); if($query->rowCount() > 0 ){ $db->query("DELETE * FROM follow WHERE user1 = 'kim' AND

我有一个跟踪系统,允许用户相互跟踪。我使用的是PHPPDO,所以它不支持多行查询,而是需要一个长查询。目前我正在使用下面的代码

$query = $db->query("SELECT id FROM follow WHERE user1 = 'kim' AND user2 = 'tim' ");
if($query->rowCount() > 0 ){
    $db->query("DELETE * FROM follow WHERE user1 = 'kim' AND user2 = 'tim' ");
}else{
    $db->query("INSERT INTO follow (user1,user2) VALUES ('kim','tim') ");
}
所以这里我想要的是一个长查询,而不是多个查询语句。除了长查询之外,我还需要获取指示记录是插入还是删除的数据。(可能这个问题重复了,但这是未重复的部分)我如何实现它?

这里是“长查询”


如果它太长,把它放在一个存储过程中。

你认为什么是代码>长查询< /代码>?@ uMuld意味着只有一行查询而不是我目前正在使用的东西存在。NOT EXISTS etc如果没有从第一次查询中获取结果,则不可能放入
if else
条件?我认为您要查找的是根据条件在一个查询中插入和删除子查询。您可能想看看这个:您的UI不能告诉用户用户是在跟踪还是不跟踪吗?让用户在不知道是做一件事还是做完全相反的事的情况下单击某件事似乎不是很友好。上面的代码是否可以向我返回insert或delete?根据,此答案无效。@WayneSmallman您链接的答案是对的,但不会使我错:)
IF EXISTS (SELECT id FROM follow WHERE user1 = 'kim' AND user2 = 'tim' )
BEGIN
    DELETE * FROM follow WHERE user1 = 'kim' AND user2 = 'tim'
END
ELSE
BEGIN
    INSERT INTO follow (user1,user2) VALUES ('kim','tim')
END