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

Discussion in 'Инъекции в MySQL' started by Xpite, Apr 20, 2018.

Tags:
  1. Xpite

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

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

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

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Здравствуйте.

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

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

    kagorec Администратор Staff Member Администратор

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Location:
    Latvia
    В базе можно настроить чтобы поле считалось "главным", одинаковые значения не смогут вписаться.
    В скрипте проверка по наличию такого же title в базе:
    Code:
    $inbase = @mysql_num_rows(mysql_query("SELECT * FROM post WHERE title='".$_POST['title']."'"));
        if($inbase > 0)
            echo "DUBLICATE title NOT IMPORT!\n";
        else {... тут уже запись в базу}
     
    xLime and Xpite like this.
  4. Xpite

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

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

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

    Joined:
    Mar 13, 2017
    Messages:
    103
    спасибо большое! Это мне в скрипт cd.php получается внедрять?
     
  6. Root

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

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Еб ать.

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

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

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

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

    Joined:
    Mar 13, 2017
    Messages:
    103
    Т.е. Вы мне поняли правильно?
     
  8. Root

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

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

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

    kagorec Администратор Staff Member Администратор

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Location:
    Latvia
    В php скрипт (который на сайте)
     
    Xpite likes this.
  10. Xpite

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

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

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

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Отлично.

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

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

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

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

    Joined:
    Mar 13, 2017
    Messages:
    103
    Спасибо большое за разъяснения, попробую и тот и тот вариант!
     
    Root likes this.
  13. Root

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

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Пожалуйста.

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

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

Share This Page