1

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 错误?

4

5 回答 5

5

打电话给mysql_errno()mysql_query()并检查1062

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

于 2011-07-10T16:26:26.303 回答
5

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

于 2011-07-10T16:26:56.063 回答
1

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

于 2011-07-10T16:27:30.060 回答
0

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

mysql_query($sql);

if (mysql_errno() == 1062) {       
  print "<script type=\"text/javascript\">"; 
  print "alert('The informations are already inserted')"; 
  print "</script>";
}
于 2013-01-17T05:59:06.740 回答
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
于 2017-08-13T15:40:23.890 回答