|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.02.2020, 22:38 | #1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Проблемы при записи в БД из PHP
Здравствуйте.
Суть вопроса: необходимо обновлять курс валют на сайте WordPress + WooCommerce. Сам плагин обновляет курс, но последние события показывают, что делает он это слишком редко по отношению к частоте обновления цен и наличия (никаких настроек не обнаружено). И часто получается так, что после обновления цен и наличия - курс валюты уже/ещё не актуален. В гугле я ничего не нашёл по этому вопросу, на спец. форумах делают вид что моей проблемы не существует, но это не важно. В общем, я тут много могу рассказывать о том что у меня было, что есть и к чему стремлюсь. В базе данных я нашёл запись ответственную за курс валюты, и при ручном изменении значения - всё работает как надо. Дальше кусок моего кода, цель которого - автоматизировать этот процесс. Код:
А вот выполнение запроса - всё ломает до такой степени, что следующий этап - восстановление бэкапа БД (благо хостер даёт такую возможность). Из всего описанного выше, я делаю вывод, что мой код PHP шлёт битые данные. Что тут не так ?
Подпись ? Не, не слышал ...
|
10.02.2020, 23:38 | #2 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Потестил собираемый запрос в phpMyAdmin, и последний ругается на синтаксис. В таком случае не понятно как вообще запрос выполняется из PHP, ломая всю базу.
Очевидно что проблема в моём "нативном" способе построения запроса. Но я по другому и не умею. Что подскажете - как правильно собрать запрос ? При том условии, что у меня один параметр - сериализованный массив
Подпись ? Не, не слышал ...
|
11.02.2020, 04:52 | #3 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
Читать про строки, про экранирование, и ещё много чего
Код:
|
11.02.2020, 13:03 | #4 | |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Цитата:
Нужно ли $_data предварительно прогонять через mysqli_real_escape_string ?
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 11.02.2020 в 13:06. |
|
11.02.2020, 14:12 | #5 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
У вас строкой ранее это происходит, если не заметили...
Должен сработать |
11.02.2020, 15:07 | #6 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Не сработало.
Так же поломалось всё. Вот сам запрос Код:
Покурил вот эту доку, ничего нового не увидел. Помогите плз. Я думаю что это вопрос исключительно оптыа, хотя ранее я хранил сериализованные куки в БД, проблем не возникало. Тут не пойми что вообще
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 11.02.2020 в 15:18. |
11.02.2020, 21:48 | #7 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
похоже лишка заескейпили )
попробуй без mysqli_real_escape_string($db_conne ctor,serialize($_data)); а вообще там наверняка в wp Есть кусок который измененные данные записывает - посмотри, может на примере его удастся |
11.02.2020, 22:14 | #8 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Там поди разберись во всех абстракциях функционального программирования, у меня стек-трейс ломается (не видно полной последовательности вызовов). А так я смотрел, всё идёт в некую функцию update_option(), коих по всему API штук пять
Подпись ? Не, не слышал ...
|
12.02.2020, 02:58 | #9 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Покурил различные доки, поковырялся
Есть некая функция esc_html, которая расположена в одном файле. У этой функции имеютcя зависимоcти на два других файла. Полез в один из этих файлов - там ещё четыре зависимости. Чёрт ногу сломит, что называется. Использовать функции среды в нативном режиме - слишком уж "пальцем в небо", и в лучшем случае ничего не сработает. И пока остаётся только один вариант - имитировать действия как при ручном редактировании записи в БД. Это означает, что никаких unserialize/serialize, только позиционное редактирование целой строки Пщёл тестить. UPD: имитация полученного запроса в phpMyAdmin всё равно падает, всё равно с кодом 1064, и всё равно на том же месте - чему я особо не удивлён. И раз выполнение запроса из PHP происходит без ошибок - значится тестировать нужно запрос именно через PHP ... Нужно только дождаться следующего авто-бэкапа БД на хостинге. Ручной бэкап позволяет только скачать, а это в моём случае не вариант. Так что отпишу сюда через пару дней. UPD: в общем, не сработало это (несколько вариантов экранирования в том числе html). Вариант с базой и значением пока на карандаше. В админке есть кнопка, нажатие на которую вручную пинает обновление курса валют. Пошёл копать в этом направлении.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 12.02.2020 в 17:54. |
12.02.2020, 20:04 | #10 | |
Участник клуба
Регистрация: 19.01.2009
Сообщений: 1,457
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с WP сортировкой записи | Дсмипмй | WordPress и другие CMS | 1 | 08.10.2017 18:37 |
Проблемы с созданием новой записи. | Кодер2 | C# (си шарп) | 1 | 03.04.2017 15:04 |
Проблемы при бинарном чтении/записи fstream | Max1548 | Общие вопросы C/C++ | 12 | 01.04.2017 11:18 |
Как обновить последние записи за определенный срок не обновляя не законченные записи? | SotGEGDS | SQL, базы данных | 3 | 11.06.2013 14:39 |
Проблемы при записи и считыванияиз базы данных | Aleksandr | Общие вопросы Delphi | 5 | 14.06.2011 23:52 |