当我使用 PDO 准备语句,并使用它向查询插入表名时,它失败了,一个简单的例子:
$stmt = $dbh->prepare("CREATE TABLE ? (id foo, int bar,...)");
$stmt->execute(Array('table_foobar'));
它所做的只是将 ?
替换为 'table_foobar'
,单引号不允许为我创建表格!
我最终需要在准备好的语句的顶部执行 sprintf
以添加预定义的表名。
我到底错过了什么?
最佳答案
我在手册中找不到任何明确的内容,但查看用户贡献的注释,参数的使用仅用于实际值,而不是表名、字段名等。
应该(也可以)使用普通的字符串连接。
$tablename = "tablename";
$stmt = $dbh->prepare("CREATE TABLE `$tablename` (id foo, int bar,...)");
关于PHP/PDO : Prepared statements don't work when creating a table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3665784/