что не так с этим единственным PDO? - PullRequest
2 голосов
/ 01 июля 2011

Здесь дело в том, что другой PDO работает хорошо, а этот - нет.Я пытался с

execute(array(':t'=>$table));

безуспешно.Идеи?.

public function __construct($table){
        try{
                $pdocnx = new PDO("mysql:host=localhost;dbname=sigcat",'root','');
                $stmt = $pdocnx->prepare('select * from sigcat.:t');
                $stmt->bindParam(':t', urldecode($table), PDO::PARAM_STR,45);
                $stmt->execute();
                $row = $stmt->fetchAll(PDO::FETCH_ASSOC);
                var_dump($row);
        }catch(Exception $e){
            echo $e->getMessage();
        }   

    }

Я получил много записей в 'supplies', но он возвращает array (0) {}.Я получаю параметр 'table' с $ _GET ['table'].Хотя исключений нет.

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Вы не можете связывать имена таблиц, только значения.

Поддерживайте список допустимых имен и убедитесь, что строка присутствует в действительном списке.

Если вы не можете построитьсписок допустимых имен, вы, вероятно, делаете что-то не так.

0 голосов
/ 25 июня 2012

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

public function myFunction($table){
    $st = "SELECT FROM `" . $table ."` ..some sql";
    $statement->prepare($st);
    $statement->execute();

} 

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...