Показать сообщение об ошибке в 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, верните ошибку, как бы вы ни хотели, чтобы она отображалась.

Используя третью ссылку, сравните ошибку 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>";
}
Другие вопросы по тегам