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上执行以添加预定义的表名.
我到底在这里错过了什么?
我在手册中找不到任何明确的内容,但是查看用户贡献的注释,参数的使用仅用于实际值,而不是表名,字段名等.
应该(并且可以)使用正常的字符串连接.
$tablename = "tablename";
$stmt = $dbh->prepare("CREATE TABLE `$tablename` (id foo, int bar,...)");
Run Code Online (Sandbox Code Playgroud)