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

Тема в разделе "Как сделать...", создана пользователем Uglik, 27 фев 2012.

  1. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    Здравствуйте

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

    Скрипт пишеться под WP
     
  2. antiterror

    antiterror xProgramming

    Регистр.:
    22 авг 2007
    Сообщения:
    343
    Симпатии:
    135
    А название таблиц и полей какое?
     
  3. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    `wp_posts` таблица поле с загаловком post_title
     
  4. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Смутило условие добавляем, если true... Может имелось в виду обновляем?
    Код:
    UPDATE `wp_posts` SET `post_content`='$var' WHERE `post_title`='тест пост' LIMIT 1
     
  5. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    нет мне нужно сделать проверку перед добалением... если пост с таким загаловком уже есть значит добавлять его не нужно .... если нет нужно.... мня интересует сама проверка
     
  6. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Ну, чтоб вам было проще разобраться, приведу такой пример
    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(); //Здесь номер добавленной записи
    }
     
    Uglik нравится это.
  7. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    просто сделайте поле post_title уникальным и система сама не даст вставить повторяющиеся данные...
     
    Uglik нравится это.
  8. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Просто сделайте поле post_content уникальным.

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

    antiterror xProgramming

    Регистр.:
    22 авг 2007
    Сообщения:
    343
    Симпатии:
    135
    Ты меня так порадовал сейчас)) спасибо за подсказку с 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/