PHP MySQL 如果关系表中的键不存在则插入

标签 php mysql database

我是 MySQL 语言新手。我发现插入关系数据时遇到一些麻烦。我有一个用于存储用户友谊的表。假设 user1(id =1) 和 user2(id =2) 是 friend 。然后,我将信息存储在 friend 表中,如下所示:

好友表

user_id1 | user_id2
  1           2

但是,我的php文件中的某些操作可能会再次检查这两个用户的关系,然后插入/更新好友信息。

1) 使用 user_id1 检查用户,然后更新好友信息(使用 insert ON DUPLICATE KEY)。

INSERT INTO friend (user_id1, user_id2) VALUES ('1', '2') 
ON DUPLICATE KEY UPDATE user_id2=user_id2

好友表仍然正确,因为没有任何更改:

好友表

user_id1 | user_id2
  1           2

但如果先从user2开始检查,则再次插入好友信息

好友表

user_id1 | user_id2
  1      |    2
  2      |    1

是否有任何 SQL 语句可以防止这种情况发生?

感谢您的回答,抱歉我的英语不好

最佳答案

对于 SQL,它只是新数据,在本例中 1,2 实际上与 2,1 相同。不知道有没有SQL函数可以实现这个功能。但在将值发送到 SQL 之前检查 php 中的值可能是合适的。

不知道你的 PHP 代码,你可以尝试这样的事情

$data = array('user_id1' => 2, 'user_id2' = 1);
arsort($data); //now the lowest id is always first

$user_id1 = current($data);
$user_id2 = next($data);

//send to SQL

希望这能引导您走向正确的方向

关于PHP MySQL 如果关系表中的键不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672127/

相关文章:

php - facebook php sdk 如何从 javascript sdk 获取访问 token ?

mysql - 有没有一个SQL命令可以通过id更新大量行?

php - 谷歌云sql中的Mysql连接

mysql - 为什么 Oracle 不能在 order by 子句中选择语句的真实性

java - JDBC连接是如何实现的?

php - 强制文件下载代码在本地主机上工作,但在 php 中的实际服务器上不工作

php数组将一个数组的值添加到另一个数组

javascript - 你能帮我使用 php preg_replace 重写我的 javascript 正则表达式吗?

database - 我们未能按自定义安装尝试数据库。计划恢复?

c# - 如何连接到 MySQL 数据库?