在这里,其他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'参数。不过没有例外。
答案 0 :(得分:2)
您不能绑定表名,只能绑定值。
维护有效名称列表并确保字符串存在于有效列表中。
如果您无法构建有效名称列表,那么您可能做错了。
答案 1 :(得分:-1)
你不能绑定表,所以你可以这样做一个偷偷摸摸的技巧:
public function myFunction($table){
$st = "SELECT FROM `" . $table ."` ..some sql";
$statement->prepare($st);
$statement->execute();
}
希望这有帮助。