Показать сообщение об ошибке в php для MYSQL дубликат ошибки - PullRequest
1 голос
/ 10 июля 2011

Я использую UNIQUE Constraint в моей таблице для двух столбцов, чтобы избежать дублирования строк. Если я пытаюсь вставить строку с теми же двумя столбцами, я получаю

Произошла ошибка базы данных Номер 1062

Дублирующая запись '62 -88 'для ключа 'Подписка'

INSERT INTO subscriptions (user_id, subscribed_to, date) ЦЕННОСТИ ('62', '88', '2011-07-11 19:15:13' )

Имя файла: C: \ WAMP \ WWW \ MySite \ система \ базы данных \ DB_driver.php

Номер строки: 330

Как я могу вернуть ошибку php, например ... 1020 * вместо отображения ошибки mysql?

Ответы [ 5 ]

5 голосов
/ 10 июля 2011

Я думаю, вам нужно будет выполнить запрос вручную, чтобы проверить, существует ли уже запись в вашей базе данных.так что-то вроде: SELECT COUNT(*) FROM subscriptions WHERE (user_id = '62' AND subscribed_to = '88').Если возвращенное число> 0, верните ошибку, как бы вы ни хотели, чтобы она отображалась.

5 голосов
/ 10 июля 2011

Позвоните mysql_errno() после вашего mysql_query() и проверьте на 1062.

Примечание: Это более распространенное / интуитивно понятное решение для запроса базы данных в первую очередь. См ответ Маночо .

1 голос
/ 10 июля 2011

Используя третью ссылку, сравните ошибку mysql или mysql errno со списком ошибок и, если условие выполнено, укажите альтернативное сообщение об ошибке.

0 голосов
/ 13 августа 2017

попробуйте этот код:

  $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
0 голосов
/ 17 января 2013

Для устранения ошибки вы можете сделать это:

mysql_query($sql);

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