Далі наведено попередження для класу wpdb.
https://codex.wordpress.org/Class_Reference/wpdb
Попередження
Деякі функції цього класу приймають операцію SQL як вхідний. Ви повинні уникати SQL усіх ненадійних значень, які ви включаєте в запит SQL, щоб запобігти атакам ін'єкції SQL. Перегляньте документацію, щоб побачити, чи функція, яку ви плануєте використовувати, виключає для вас SQL чи очікує, що вона буде попередньо уникнута.
Тому я читаю це як - клас wpdb не готує автоматично та не дозволяє вам отримати дані.
Я майже впевнений, що якщо ви не можете довіряти стовідсотковому джерелу даних у своєму коді, я пропоную скористатися класом підготовки (?).
Не думайте, що використання класу підготовки виправить це без належного використання класу підготовки. Я досить новий в цьому, тому будь ласка, опублікуйте будь-які виправлення як відповідь, якщо я не прав.
$ wpdb-> підготовка ("SELECT * FROM table WHERE ID =% d AND name =% s", $ id, $ name);
У наведеному вище твердженні є 2 додаткові атрибути. Один для ідентифікатора та одного для імені. Наскільки я прочитав, кожен відповідає відповідно до кількості елементів у вашому запиті. Також% s = рядок,% d = ціле число і% f = float.
Крім того, з мого читання, якщо ви не помістите зайві атрибути, то підготовка насправді нічого не зробить. Буде попередження, але якщо ви вимкнете це, можливо, ви не будете знати.
Ось приклад із посилання на клас, де вони додають клас підготовки в INSERT нижче.
https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks
$ wpdb-> запит ($ wpdb-> підготовка ("ВСТАВИТЬСЯ В $ wpdb-> постмета (post_id, meta_key, meta_value) VALUES (% d,% s,% s)", масив (10, $ metakey, $ метазначення) ));
Мене хвилює те, що відповідь, що обґрунтовується, є невірною відповідно до тієї ж сторінки, на яку "ніхто" посилається. Я припускаю, що ви використовуєте готовий (), але не інші стандартні методи php для втечі, тому що я сприйняв цю відповідь як правильну ... поки я не заглибився.
У будь-якому випадку ... можливо, змінилися речі з часу початкової відповіді.
insert
іupdate
це не потрібно. Але його слід використовувати зquery
.