我在我的表中使用UNIQUE Constraint
两列来防止重复行。如果我尝试插入具有相同2列的行,我会得到
发生数据库错误错误 编号:1062
为密钥重复输入'62 -88' '订阅'
INSERT INTO
subscriptions
(user_id
,subscribed_to
,date
) 价值观('62','88','2011-07-11 19时15分十三秒' )文件名: C:\瓦帕\ WWW \ mysite的\ SYSTEM \数据库\ DB_driver.php
行号:330
如何返回php错误,e..g Already subscribed!
而不是显示mysql错误?
答案 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