Не записывать дубли

Тема в разделе "Инъекции в MySQL", создана пользователем Xpite, 20 апр 2018.

Метки:
  1. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Всем привет!
    Пишу сразу в базу mysql через php скрипт, выложенный в кулуарах этого форума
    Возможно ли в этот скрипт вставить условие, если поле title в таблице post с таким содержанием уже есть, то ничего не записывать, а если нету, то выполнять полный спектр действий?
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Используйте макрос <PHP_SCRIPT_0> для отправки запроса с целью получения "если поле title в таблице post с таким содержанием"

    Результат работы макроса <PHP_SCRIPT_0> (с ответом Y или N) используйте в макросе [CHECKENTRY] (для выполнения тех или иных действий в зависимости от ответа <PHP_SCRIPT_0>)
     
    xLime и Xpite нравится это.
  3. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    В базе можно настроить чтобы поле считалось "главным", одинаковые значения не смогут вписаться.
    В скрипте проверка по наличию такого же title в базе:
    Код:
    $inbase = @mysql_num_rows(mysql_query("SELECT * FROM post WHERE title='".$_POST['title']."'"));
        if($inbase > 0)
            echo "DUBLICATE title NOT IMPORT!\n";
        else {... тут уже запись в базу}
     
    xLime и Xpite нравится это.
  4. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Я вероятно не так выразился. В базу данных пишется сотни тысяч публикаций, часть из которых дубли по заголовку. Соответственно, чтобы не плодить дубли, мне их нужно отбраковывать. Хотя других способов кроме как в заголовке определить что это дубль нельзя. Мне нужно чтобы перед записью в базу, скрипт проверял в моей базе (в которую он сейчас и пишет), что там нет записей с таким титлом и если нет, то писал все что там ему указано, а если есть, то переходил к следующей записи.
     
  5. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    спасибо большое! Это мне в скрипт cd.php получается внедрять?
     
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Еб ать.

    Я написал, как это сделать (смотрите выше).

    PHP_SCRIPT_0 только проверяет наличие такой записи, а потом уже можно использовать PHP_SCRIPT (внутри макроса CHECKENTRY) для занесения новой записи в базу, если нужно.

    У меня теперь к вам вопрос, как вас заставить делать, то, что написано (так как я преследую максимально эффективное решение всех вопросов). Ведь это решение вашего вопроса.
     
  7. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Т.е. Вы мне поняли правильно?
     
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Еще два раза спросите, понял ли я вас правильно. Раз написал ответ, значит понял. Поняли ли вы правильно, что делать. Странно обращаться за ответом и не принимать полученный ответ, это напрягает меня!

    Сделайте как написано, без лишних обсуждений и все должно получиться. Если будут еще вопросы - пишите, поможем!
     
    Xpite нравится это.
  9. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    В php скрипт (который на сайте)
     
    Xpite нравится это.
  10. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Понял, спасибо большое за помощь, я просто предполагал, что это необходимо сделать внутри php скрипта, а не CD.
     
  11. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Отлично.

    Еще раз:
    1) PHP_SCRIPT_0 отправляет первым запрос в базу и получает ответ (есть ли такая там запись)
    2) Полученный ответ обрабатывается макросом CHECKENTRY (если да, то выполнить вложенный PHP_SCRIPT для ДОБАВЛЕНИЯ записи в базу, если нет - ничего не делать)

    Вот справка по макросу CHECKENTRY -> Ссылки недоступны для гостей

    Если у вас будут вопросы, пожалуйста, обращайтесь.
     
    kagorec и Xpite нравится это.
  12. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Спасибо большое за разъяснения, попробую и тот и тот вариант!
     
    Root нравится это.
  13. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Пожалуйста.

    И тот и тот вариант - рабочие.

    Вариант решения этого вопроса от Kagorec лучше (в нем выполняется всего один запрос к серверу). Я в спешке об этом не подумал.
     
    kagorec и Xpite нравится это.

Поделиться этой страницей