【问题标题】:Display error message in php for MYSQL duplicate error在 php 中显示 MYSQL 重复错误的错误消息
【发布时间】:2011-07-10 16:21:23
【问题描述】:

我在我的表中使用UNIQUE Constraint 用于两列以防止重复行。如果我尝试插入具有相同 2 列的行,我会得到

发生数据库错误错误 编号:1062

键的重复条目“62-88” '订阅'

插入subscriptions (user_id, subscribed_to, date) 值('62','88','2011-07-11 19:15:13')

文件名: C:\wamp\www\mysite\system\database\DB_driver.php

行号:330

我怎样才能返回一个php错误,例如Already subscribed!而不是显示mysql错误?

【问题讨论】:

标签: php mysql mysql-error-1062


【解决方案1】:

在您的mysql_query() 之后调用mysql_errno() 并检查1062

注意:首先查询数据库是一种更常见/更直观的解决方案。请参阅 Manocho 的回答。

【讨论】:

  • +1:数据库和应用程序之间的行程越少越好。
  • 感谢您的建议!我正在使用 MVC 模式。如果我理解正确,我会在我的insert 查询(在我的模型中)之后添加mysql_errno(),这应该返回1062?那我就用if ($query == 1062)显示错误?
  • 是的。你可以把它放在你的模型中。但我认为这是业务逻辑,它可能在您的控制器中得到更好的服务。注意,检查mysql_errno() 是否返回1062,而不是查询。
  • Manocho 的答案在哪里?
【解决方案2】:

我认为您需要手动运行查询以检查该条目是否已存在于您的数据库中。比如:SELECT COUNT(*) FROM subscriptions WHERE (user_id = '62' AND subscribed_to = '88')。如果返回的计数 > 0,则返回错误,但您希望它显示。

【讨论】:

  • @Jason 的响应实际上比我的效率更高,尽管两者都可以。
  • 数据库和应用程序之间的行程越少越好。
【解决方案3】:

使用第 3 个链接,将 mysql 错误或 mysql errno 与错误列表进行比较,如果满足条件,请提供您的备用错误消息。

【讨论】:

    【解决方案4】:

    要解决错误,您可以这样做:

    mysql_query($sql);
    
    if (mysql_errno() == 1062) {       
      print "<script type=\"text/javascript\">"; 
      print "alert('The informations are already inserted')"; 
      print "</script>";
    }
    

    【讨论】:

      【解决方案5】:

      试试这个代码:

        $query = "INSERT INTO ".$table_name." ".$insertdata;
                      if(mysqli_query($conn,$query)){
                          echo "data inserted into DB<br>";                   
                      }else{
                         if(mysqli_errno($conn) == 1062)
                             echo "duplicate entry no need to insert into DB<br>";
                         else
                          echo "db insertion error:".$query."<br>";
      
                      }//else end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-17
        相关资源
        最近更新 更多