Показать сообщение об ошибке в php для MYSQL дубликат ошибки
Я использую UNIQUE Constraint
в моей таблице для двух столбцов, чтобы предотвратить дублирование строк. Если я пытаюсь вставить строку с теми же двумя столбцами, я получаю
Произошла ошибка базы данных. Номер ошибки: 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?
5 ответов
Вызов mysql_errno()
после вашего mysql_query()
и проверить на 1062
,
Примечание: это более распространенное / интуитивно понятное решение для запроса базы данных в первую очередь. Смотрите ответ Маночо.
Я думаю, вам нужно будет выполнить запрос вручную, чтобы проверить, существует ли уже запись в вашей базе данных. так что-то вроде: SELECT COUNT(*) FROM subscriptions WHERE (user_id = '62' AND subscribed_to = '88')
, Если возвращенное число> 0, верните ошибку, как бы вы ни хотели, чтобы она отображалась.
- http://php.net/manual/en/function.mysql-error.php Я предполагаю, что вы можете программно получить ошибку MySQL
- http://www.php.net/manual/en/function.mysql-errno.php
- http://dev.mysql.com/doc/refman/5.5/en/error-handling.html
Используя третью ссылку, сравните ошибку mysql или mysql errno со списком ошибок и, если условие выполнено, укажите альтернативное сообщение об ошибке.
Попробуйте этот код:
$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
Чтобы устранить ошибку, вы можете сделать это:
mysql_query($sql);
if (mysql_errno() == 1062) {
print "<script type=\"text/javascript\">";
print "alert('The informations are already inserted')";
print "</script>";
}