Нужна помощь с проверкой mysql

Uglik

Старатель
Регистрация
8 Окт 2008
Сообщения
350
Реакции
14
Здравствуйте

Помогите с запросом.
Нужно сделать проверку в базу данных mysql.
Проверка по зоголовку... если "тест пост" == "тест пост" добавляем пост в бд
Пример: "тест пост" == "тест пост" (true) , "тест пост" == "тест пост 2" (false) Загаловки должны полностью совпадать
И получаем id добавленного поста

Скрипт пишеться под WP
 
А название таблиц и полей какое?
 
Смутило условие добавляем, если true... Может имелось в виду обновляем?
Код:
UPDATE `wp_posts` SET `post_content`='$var' WHERE `post_title`='тест пост' LIMIT 1
 
Смутило условие добавляем, если true... Может имелось в виду обновляем?
Код:
UPDATE `wp_posts` SET `post_content`='$var' WHERE `post_title`='тест пост' LIMIT 1
нет мне нужно сделать проверку перед добалением... если пост с таким загаловком уже есть значит добавлять его не нужно .... если нет нужно.... мня интересует сама проверка
 
если "тест пост" == "тест пост" добавляем пост в бд
если пост с таким загаловком уже есть значит добавлять его не нужно

Ну, чтоб вам было проще разобраться, приведу такой пример
PHP:
$q = mysql_query("SELECT `id` FROM `wp_posts` WHERE `post_title`='тест пост' LIMIT 1");
if(mysql_num_rows($q) < 1)
{
mysql_query("INSERT INTO `wp_posts` (`post_content`) VALUES('текст поста')");
$n = mysql_last_id(); //Здесь номер добавленной записи
}
 
просто сделайте поле post_title уникальным и система сама не даст вставить повторяющиеся данные...
 
Просто сделайте поле post_content уникальным.

PHP:
mysql_query("INSERT IGNORE INTO `wp_posts` (`post_content`) VALUES('текст поста')");
 
$n = mysql_last_id(); //Здесь номер добавленной записи. Если он равен нулю, то такой текст уже есть.

Отличие от верхнего поста - наличие слова IGNORE
 
PHP:
mysql_query("INSERT IGNORE INTO `wp_posts` (`post_content`) VALUES('текст поста')");
Ты меня так порадовал сейчас)) спасибо за подсказку с IGNOR, а то приходилось использовать такой запрос всегда:
INSERT INTO table SET column = 1, id=1 ON DUPLICATE KEY UPDATE ...

Вопрос: поле post_content должно быть UNIQUE в случай такого запроса "INSERT IGNORE INTO..." ? И как будет влиять если в таблице несколько значений?
Нашёл уже ответ на свой вопрос:
Код:
IGNORE - Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится вставка новой строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то вставка записей не прерывается, а строки с дублирующими значениями просто не вставляются.
 
http://www.spravkaweb.ru/mysql/sql/insert/
 
Назад
Сверху