【问题标题】:check if data already exist检查数据是否已经存在
【发布时间】:2012-01-14 01:05:18
【问题描述】:

如何在存储到 mysql 之前检查我的数据库中是否已经存在变量的数组 1。如果$explode[$i] 存在,请转到下一步。如果不存在运行下面的代码!

这是我在 php 中的代码:

$request_user_ids = $_GET['req'];
     $explode = explode(',',$request_user_ids);
     for ($i=0; $i<count($explode);$i++){

  $result = mysql_query("
          INSERT INTO fbinvite (memberid, fbsender, fbempfang, regdatum, fbreturn) 
          VALUES(NULL, '".$userid."', '".$explode[$i]."', NOW(), '0')");

没有双插入怎么办。

【问题讨论】:

  • 有一个mysql命令,你想要的是IGNORE,所以如果它已经存在你会忽略它。如果您想要 Upsert 或 Merge,请使用 ON DUPLICATE。
  • 谢谢,大多数东西都很容易看到。我用IGNORE 做到了这一点,原因是“先到先得”,但忘记将 fbempfang 设置为unique
  • 别忘了清理输入数据

标签: php mysql insert get explode


【解决方案1】:

首先将相关的属性集设为表的主键或唯一索引。

那么你有几个选择:

  • 如果您只是想忽略重复数据,请盲目使用INSERT IGNORE INTO fbinvite ...,或者
  • 检查条目是否存在:SELECT memberid FROM fbinvite WHERE some_attr1 = $explode[...] AND some_attr2 = $explode[...];并适当地继续:
    • 如果条目不存在,则将其插入表中:INSERT INTO fbinvite ...
    • 如果条目存在:
      • 向用户显示消息或
      • 更新现有条目:UPDATE fbinvide ... WHERE ...
    • 立即插入或更新:INSERT ... ON DUPLICATE KEY UPDATE ...

【讨论】:

  • 第一部分是更好的方法,否则当有 30 个变量时查询可能会很长。然后继续简单的IF ($result){}
猜你喜欢
  • 2020-02-04
  • 2015-07-12
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
相关资源
最近更新 更多