这个单一的PDO有什么问题?

时间:2011-07-01 05:10:31

标签: php pdo

在这里,其他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){}。我正在使用$ _GET ['table']获取'table'参数。不过没有例外。

2 个答案:

答案 0 :(得分:2)

您不能绑定表名,只能绑定值。

维护有效名称列表并确保字符串存在于有效列表中。

如果您无法构建有效名称列表,那么您可能做错了。

答案 1 :(得分:-1)

你不能绑定表,所以你可以这样做一个偷偷摸摸的技巧:

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

} 

希望这有帮助。