SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.05.2020 19:11:55

Bambook
Участник
Зарегистрирован: 23.05.2020
Сообщений: 8

Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

1064
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 ': htmlspecialchars() expects parameter 1 to be string, array given in D:\DOWNLO' at line 6

Действие происходит на localhost / Openserver / PHP_7.3 / My SQL-5.7, где я только учусь работать с MySQL. И в этом сообщении на сайте, и при обсуждении в Интернете похожих ошибок советуют смотреть мануал. Я честно прочитал в мануале про функцию htmlspecialchars()  и соответствующий синтакс. И чо? Никаких понятных мне инструкций не нашел.

Как решить проблему-то? Что надо делать конкретно? Что куда вставить или где искать ошибку?

Мой уровень: могу открыть php-MyAdmin и создать /удалить базу данных /таблицу, вставить простейший запрос и т.п.

Неактивен

 

#2 23.05.2020 23:55:40

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

https://sqlinfo.ru/articles/info/15.html

Это готовый сайт или вы сами пишите скрипты php?
Вы можете привести целиком запрос, который приводит к ошибке?

Неактивен

 

#3 24.05.2020 05:19:33

Bambook
Участник
Зарегистрирован: 23.05.2020
Сообщений: 8

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

Спасибо за оперативный ответ! Я вышел ваш сайт именно через эту статью в Гугле - но, к сожалению, не понял из нее, что же конкретно мне надо делать.

Я установил на жесткий диск Joomla и приложение-магазин, изучаю сайтостроительство и администрирование (да, карантин smile. Ошибка выдается только при генерации главной страницы, а панель администратора работает нормально. Перед появлением ошибки ничего не обновлял и не устанавливал, но сканировал весь жесткий диск на исправление ошибок - т.е. скорее всего, утилита компа где-то перезаписала в файлах сайта символы, которые сочла поврежденными.

У меня есть бэкап сайта, но я хочу сам разобраться, как исправить ошибку. Собственно, я даже не прошу сделать это за меня, а подкинуть ключевых слов, что-ли, где и что искать. При этом уровень знания MySQL почти нулевой. Месяц назад я вообще не подозревал о его существовании smile

Вот что я не нашел. Как выглядит запрос к MySQL для генерации главной страницы? Наверное, если его воспроизвести в php-MyAdmin, то MySQL ответит более развернуто и укажет адрес файла и номер строки с неправильными символами? Или нет?

Или же ошибка в самой базе данных, и нужно поменять параметры бд или таблицы? А как узнать - какой? MySQL пишет, что в параметре 1 нужна строка, а там "множество" (еще бы разобраться, что бы это значило smile

Заранее благодарен за подсказки!

Неактивен

 

#4 24.05.2020 07:26:05

Bambook
Участник
Зарегистрирован: 23.05.2020
Сообщений: 8

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

Вот что ночью написали на forums.mysql*com: "htmlspecialchars () expects parameter 1 to be string, array given" looks like a PHP error message that you've somehow sent to MySQL"

То есть надо искать на localhost файл php с ошибкой? или даже не только php?

Неактивен

 

#5 24.05.2020 08:24:10

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

htmlspecialchars() expects parameter 1 to be string, array given in D:\DOWNLO... это действительно ошибка php, которая почему-то отправляется в виде sql запроса.

Начать нужно с того, что получить полный текст sql запроса. Там скорее всего будет имя файла и строка в php скрипте, где произошла проблема с htmlspecialchars().
Для этого включите общий лог запросов mysql (general query log). Зайдите на сайт, чтобы произошла ошибка, и пишите сюда, что конкретно будет в логе.

Неактивен

 

#6 24.05.2020 09:35:53

Bambook
Участник
Зарегистрирован: 23.05.2020
Сообщений: 8

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

Отлично, спасибо! Получил лог - уже есть некое продвижение!

Информация для таких же несведущих, как я:

1. Таблица "general_log" находится в базе данных mysql, по умолчанию она выключена, хотя у меня почему-то оказалась включена.

Как включить:

SET global general_log = 1;
SET global log_output = 'table';


Выключить обратно (видимо, замедляет работу sql):
SET global general_log = 0;

2. Получить лог

SELECT
    *
FROM
    mysql.general_log;


Далее выбрать опцию "экспорт" и формат, я сохранил в *txt

Вот что получилось...

Отредактированно Bambook (24.05.2020 09:40:29)


Прикрепленные файлы:
Attachment Icon general_log.txt, Размер: 581,244 байт, Скачано: 657

Неактивен

 

#7 25.05.2020 01:36:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

Ввел в заблуждение. Оказывается общий лог запросов не пишет синтаксически неверные запросы.

Что в логе ошибок php?

Неактивен

 

#8 25.05.2020 12:50:20

Bambook
Участник
Зарегистрирован: 23.05.2020
Сообщений: 8

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

Не без труда нашел, как включить запись логов ошибок PHP (нужно вставить спец_код в файл "php.ini").

В итоге в файле "PHP_7.3_error.log" написано:
PHP Notice:  Undefined property: stdClass::$global_border_width in D:\DOWNLOADS\OSPanel\domains\lannashop\components\com_sppagebuilder\layouts\addon\css.php on line 79

Вот строки 76-83 кода этого файла, а строка 79: if (is_object($addon->settings->global_border_width)) {

// Border
if(isset($addon->settings->global_user_border) && $addon->settings->global_user_border) {

    if (is_object($addon->settings->global_border_width))
        $addon_css .= isset($addon->settings->global_border_width->md) && $addon->settings->global_border_width->md ? "border-width: " . $addon->settings->global_border_width->md . "px;\n" : "";
    } else {
        $addon_css .= isset($addon->settings->global_border_width) && $addon->settings->global_border_width ? "border-width: " . $addon->settings->global_border_width . "px;\n" : "";
    }

Неактивен

 

#9 26.05.2020 13:00:49

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

Это совсем другая ошибка - несуществующее свойство объекта
Исследуйте, что хранится в $addon, можно ли у него вызвать global_user_border.

Но эта ошибка не должна приводить к проблеме из первого поста. Ищите где в коде htmlspecialchars(), что ей передается и почему это не строка.

Неактивен

 

#10 26.05.2020 14:03:30

Bambook
Участник
Зарегистрирован: 23.05.2020
Сообщений: 8

Re: Как исправить "ошибку 1064"? Порядок действий для совсем начинающих

vasya написал:

Это совсем другая ошибка - несуществующее свойство объекта
Исследуйте, что хранится в $addon, можно ли у него вызвать global_user_border.

Но эта ошибка не должна приводить к проблеме из первого поста. Ищите где в коде htmlspecialchars(), что ей передается и почему это не строка.

Спасибо. Будем искать!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson