在PHP中显示MYSQL重复错误的错误消息

时间:2011-07-10 16:21:24

标签: php mysql mysql-error-1062

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

  

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

     

为密钥重复输入'62 -88'   '订阅'

     

INSERT INTO subscriptions   (user_idsubscribed_todate)   价值观('62','88','2011-07-11   19时15分十三秒' )

     

文件名:   C:\瓦帕\ WWW \ mysite的\ SYSTEM \数据库\ DB_driver.php

     

行号:330

如何返回php错误,e..g Already subscribed!而不是显示mysql错误?

5 个答案:

答案 0 :(得分:5)

mysql_query()后致电mysql_errno()并检查1062

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

要解决错误,您可以执行以下操作:

mysql_query($sql);

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

答案 4 :(得分:0)

试试这段代码:

  $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