PHP/PDO : Prepared statements don't work when creating a table?

标签 php mysql pdo prepared-statement

当我使用 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/

相关文章:

php - 动态填充下拉列表 PHP MySQL

php - Slim 框架从表单中获取数据

javascript - 1.10.2/jquery.min.js 下无法执行 JSON.parse()

mysql - 从请求数据中生成 XML 代码并插入到数据库中

mysql - 使用bindParam的pdo更新显示绑定(bind)变量数量与 token 数量不匹配的错误

php - 刚接触PDO,如何正确编写这个SQL?

localhost 中的 php pdo 更新查询在服务器 centOS 中不起作用

php - Symonfy2 验证 : define constraints in yml, 并验证一个数组

c# - 单击组合框时如何避免乘法

mysql - 如果相关行不存在则插入