PHP: повторяющаяся запись 'xx' для ключа 'yy' - PullRequest
0 голосов
/ 04 января 2012

Я получаю следующую ошибку:

Duplicate entry 'morandi-midnight-train' for key 'post_name'

Я хочу проверить, есть ли в поле post_name уже определенная строка с переменной, и повторить ошибку, если это так.

Как мне это сделать?

  • post_name имеет уникальный индекс

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Запустите SELECT 1 FROM table WHERE post_name = 'morandi-midnight-train' LIMIT 1; перед вашим запросом INSERT. Если у SELECT есть какие-либо результаты, покажите ошибку.

1 голос
/ 04 января 2012

Если вы хотите проверить наличие строки, вы можете просто сделать SELECT.

Но это не лучший способ избежать проблемы «Дублированный ключ». Возможно, для вас будет лучше использовать ON DUPLICATE KEY UPDATE в вашей операции вставки. Это вставит новую строку, если она не существует, или автоматически обновит существующую строку, если она существует.

Подробнее см. В руководстве MySQL http://dev.mysql.com/doc/refman/5.5/en/insert.html

0 голосов
/ 04 января 2012

Если вы хотите игнорировать ошибку, запустите INSERT IGNORE... и впоследствии проверьте наличие поврежденных строк (через mysql_affected_rows()).

Если вы хотите обновить уже вставленную запись, выполните запрос INSERT INTO ... ON DUPLICATE KEY UPDATE.

См. MySQL Manual

...