Переменная таблицы запросов PDO Set - PullRequest
0 голосов
/ 22 сентября 2018

Можно ли выполнить запрос, используя PDO и назначив таблицу в качестве переменной?

ex:

        $db = new PDO($this->driver . ":server={$this->host};Database={$this->database_name};", $this->username, $this->password);

        $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        $db->setAttribute( PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 200 );

        $query = 'SELECT top 10 * FROM ' . $this->table . ' ' . $query;
        $stmt = $db->prepare($query);
        $stmt->execute();

        return $stmt->fetchAll();

Мне нужно передать имя таблицы в качестве аргумента.Я перепробовал много вещей, но ничего не получается.Я также попытался sqlsrv_query

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

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Вы можете попробовать этот метод: (проверьте $stmt на наличие изменений)

    $db = new PDO($this->driver . ":server={$this->host};Database={$this->database_name};", $this->username, $this->password);

    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $db->setAttribute( PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 200 );

    $query = 'SELECT top 10 * FROM :table';
    $stmt = $db->prepare($query);
    $stmt->execute(
        array(
           ':table' => $this->table
       );
    return $stmt->fetchAll();
0 голосов
/ 22 сентября 2018

Ваша проблема в вашем запросе.В конец вашего запроса $ добавлен $ query.

Попробуйте:

$query = 'SELECT top 10 * FROM ' . $this->table;

На второй заметке.Это очень важно сделать, только если вы доверяете содержанию $this->table.Это означает, что он не генерируется пользователем.PDO не допускает параметризованные имена таблиц.

...