PHP/PDO:准备语句在创建表时不起作用?

Joh*_*ohn 4 php mysql pdo prepared-statement

当我使用PDO预处理语句,并使用它来插入查询失败的表名时,一个简单的例子:

$stmt = $dbh->prepare("CREATE TABLE ? (id foo, int bar,...)");
$stmt->execute(Array('table_foobar'));
Run Code Online (Sandbox Code Playgroud)

所有它取而代之的?'table_foobar',单引号不允许为我创建表格!

我最终需要sprintf在预准备语句的TOP上执行以添加预定义的表名.

我到底在这里错过了什么?

Pek*_*ica 9

我在手册中找不到任何明确的内容,但是查看用户贡献的注释,参数的使用仅用于实际,而不是表名,字段名等.

应该(并且可以)使用正常的字符串连接.

$tablename = "tablename";
$stmt = $dbh->prepare("CREATE TABLE `$tablename` (id foo, int bar,...)");
Run Code Online (Sandbox Code Playgroud)