Когда я должен использовать $ wpdb-> prepare, если вообще?

Мне трудно понять, если я должен использовать$wpdb->prepare на моей базе данных запросов в WordPress, чтобы предотвратить такие вещи, как инъекция SQL.

Кодекс $ wpdb показаны некоторые примеры, использующие функцию $ wpdb-> prepare, и другие примеры, не использующие ее.

Также вэтот ответ на StackOverflow кто-то упомянул, что такая функция, как$wpdb->insert имеет тот же уровень безопасности, что и при использовании$wpdb->prepare, Но как насчет других$wpdb такие функции, как$wpdb->get_var или же$wpdb->query?

Когда я должен использовать$wpdb->prepare, если вообще?

Некоторые из моих (упрощенно)$wpdb Использование классов и функций выглядит следующим образом:

Пример 1: $wpdb->insert

$wpdb->insert(
                'special_posts', 
                    array( 
                        'title' => $title,
                        'selftext_html' => $selftext_html,
                        'selftext' => $selftext,
                    ), 

                    array(
                        '%s',
                        '%s',
                        '%s',
                    )
            );

Пример 2: $wpdb->get_results

$wpdb->get_results("SELECT * FROM special_posts WHERE selftext_html = '$value'");

Пример 3: $wpdb->get_var

$wpdb->get_var("SELECT title FROM special_posts ORDER BY id DESC LIMIT 1");

Пример 4: $wpdb->query

$wpdb->query('TRUNCATE TABLE special_posts');
 tadman01 июн. 2016 г., 05:06
Пример 2 именно поэтому вы используете подготовленные заявления. Короткий ответ:ДА.
 dingo_d01 июн. 2016 г., 12:59
технически$wpdb это не функция, это объект, созданныйwpdb учебный класс. И, насколько я знаю, нет, это не так. Вы всегда должны очищать запрос БД, если вы поручаете пользователю выполнить его.
 Swen01 июн. 2016 г., 05:52
Так что, чтобы быть на 100% уверенным. WordPress-х$wpdb функции не подготавливают автоматически операторы SQL для предотвращения SQL-инъекций? Или это некоторые из них делают, а другие нет?
 brasofilo21 июл. 2018 г., 19:28
 user193769901 июн. 2016 г., 04:49

Ответы на вопрос(1)

Решение Вопроса

Как я понимаю - методы те, у которых есть заполнители для параметров запроса ($wpdb->insert(), $wpdb->update(), $wpdb->delete()) не нужно$wpdb->prepare() метод, и они уже в безопасности.

Но другие - те, у которых нет заполнителей, нуждаются в дополнительном выходе из SQL.

Ваш ответ на вопрос