Операторы PHP PDO могут принять имя таблицы или имя столбца как параметр?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

232
задан Rahul 3 June 2019 в 23:49
поделиться

2 ответа

Имена таблиц и Имена столбцов не МОГУТ быть заменены параметрами в PDO.

В этом случае Вы просто захотите отфильтровать и санировать данные вручную. Один способ сделать это должно передать в параметрах стенографии функции, которая будет выполнять запрос динамично и затем использовать switch() оператор для создания белого списка допустимых значений, которые будут использоваться для имени таблицы или имени столбца. Тем путем никакой ввод данных пользователем никогда не идет непосредственно в запрос. Так, например:

function buildQuery( $get_var ) 
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM $tbl";
}

, не оставляя случая по умолчанию или используя случай по умолчанию, который возвращает сообщение об ошибке, Вы удостоверяетесь, что только оценивает это, Вы хотите используемый, привыкают.

206
ответ дан AbraCadaver 23 November 2019 в 03:36
поделиться

Используя первого не по сути более безопасно, чем последний, необходимо санировать вход, является ли это частью массива параметров или простой переменной. Таким образом, я не вижу ничто плохого с использованием последней формы с $table, если Вы удостоверяетесь, что содержание $table безопасно (alphanum плюс подчеркивания?) перед использованием его.

4
ответ дан Adam Bellaire 23 November 2019 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: