【问题标题】:Insert Ignore - is there way to know if statement was ignored? MYSQL [duplicate]插入忽略 - 有没有办法知道语句是否被忽略? MYSQL [重复]
【发布时间】:2011-03-10 02:31:44
【问题描述】:
$sql_insert = "INSERT IGNORE .....";


if(mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error()))
{
      //code to execute
}

如果插入了行,我想执行代码。是否有一些可以返回的价值时间来告诉我该语句是被插入还是被忽略?

编辑:现在,“要执行的代码”总是执行 - 即使在忽略实例上也是如此

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    mysql_affected_rows() 将返回 1 或 0,如果插入发生则返回 1

    if(mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error()))
    {
          if(mysql_affected_rows($link)==1){
           //insert took place
           }else{
           //no insert
           }
    
    
    }
    

    【讨论】:

    • 谢谢 - 接受了这个答案。快速提问 - mysql_query 是否在 if 语句中并不重要,对吗? - 因为它每次都会通过。
    • if(mysql_query 只检查语句是否运行\是有效的,不会告诉你插入 vs 忽略
    • 需要问一下,除了主键重复的情况,当受影响的行将返回零时,是否还有其他实例?或者在这种情况下,0 个受影响行的每个案例都被认为是重复主键?
    【解决方案2】:

    对于 PDO,答案将是

    $query="insert ignore into ...;";
    $statement=$link->prepare($query);
    $statement->execute();
    if($statement->rowCount()==1){
       //insert confirmed;
    }else{
       //ignore confirmed;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 2020-01-03
      • 2015-01-31
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      相关资源
      最近更新 更多