Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Phpmyadmin и php. Ошибка в запросе к БД.  [new]
Pavll
Member

Откуда:
Сообщений: 18
Добрый день!
Делаю парсинг сайта.
Создал скрипт, задачи которого: спарсить названия, описания и изображения с сайта о рыбалке, а также создать записи в базе данных.
Частично скрипт работает: изображения скачиваются, база данных заполняется. Но, по-видимому есть какая-то ошибка в коде, из-за которой скрипт останавливает свою работу и до конца не скачивает контент.
В браузере выводится следующее:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'северной широты рыба судак встречается ред�' at line 1

В скрипте я делаю такой запрос к базе данных:
if(empty($data)){
        $query="INSERT INTO content2 SET name='".$name."', text='".$text."',img = 'image/".$filename.".jpg', data=NOW() ";
        mysqli_query($link,$query)or die(mysqli_error($link));
    }

Скажите, пожалуйста, где и в чём ошибка?
30 июн 20, 18:17    [22159904]     Ответить | Цитировать Сообщить модератору
 Re: Phpmyadmin и php. Ошибка в запросе к БД.  [new]
miksoft
Member

Откуда:
Сообщений: 38443
Pavll,

Видимо, в исходных данных попадается двойная кавычка и ее надо экранировать.
Но это задача PHP или на чем этом скрипт написан.

Чтобы проверить, что MySQL реагирует правильно, сделайте отладочный вывод переменной $query перед выполнением запроса.
30 июн 20, 18:29    [22159908]     Ответить | Цитировать Сообщить модератору
 Re: Phpmyadmin и php. Ошибка в запросе к БД.  [new]
Pavll
Member

Откуда:
Сообщений: 18
Спасибо, сейчас буду пробовать.
30 июн 20, 20:22    [22159956]     Ответить | Цитировать Сообщить модератору
 Re: Phpmyadmin и php. Ошибка в запросе к БД.  [new]
Pavll
Member

Откуда:
Сообщений: 18
miksoft, проблему решил следующим образом - поместил $text в функцию addslashes() в запросе.
Строка приняла вид:

if(empty($data)){
        $query="INSERT INTO content2 SET name='".$name."', text='".addslashes($text)."',img = 'image/".$filename.".jpg', data=NOW()";
        mysqli_query($link,$query)or die(mysqli_error($link));
    }
30 июн 20, 21:31    [22159978]     Ответить | Цитировать Сообщить модератору
 Re: Phpmyadmin и php. Ошибка в запросе к БД.  [new]
miksoft
Member

Откуда:
Сообщений: 38443
Pavll,

$name не надо так же преобразывывать?
30 июн 20, 22:39    [22160002]     Ответить | Цитировать Сообщить модератору
 Re: Phpmyadmin и php. Ошибка в запросе к БД.  [new]
Pavll
Member

Откуда:
Сообщений: 18
miksoft
Pavll,

$name не надо так же преобразывывать?


Поскольку больше ошибок никаких не выводится,то я подумал, что преобразовать $text будет достаточным.

Знаю, что есть, например, функция mysqli_real_escape_string для подобной задачи.

Вообще, как лучше всего в подобных ситуациях делать запрос: через addslashes, mysqli_real_escape_string, может ещё как-то?
30 июн 20, 23:36    [22160017]     Ответить | Цитировать Сообщить модератору
 Re: Phpmyadmin и php. Ошибка в запросе к БД.  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1080
Через prepared statements api.

Pavll
Поскольку больше ошибок никаких не выводится,то я подумал, что преобразовать $text будет достаточным.

Просто классическая, прямо сказать эталонная, SQL инъекция.
2 июл 20, 11:33    [22160708]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить