Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在带有PDO的Mysql查询中使用变量_Php_Mysql_Pdo - Fatal编程技术网

Php 如何在带有PDO的Mysql查询中使用变量

Php 如何在带有PDO的Mysql查询中使用变量,php,mysql,pdo,Php,Mysql,Pdo,我想在mysql查询中安全地使用变量。我用pdo来做这个。但我不能使用pdo占位符作为表名 这是有效的 $stmt = $db->prepare("SELECT * FROM table WHERE id=?"); $stmt->execute(array($id)); 但事实并非如此 $stmt = $db->prepare("SELECT * FROM ? WHERE id=?"); $stmt->execute(array($table, $id)); 我做错了

我想在mysql查询中安全地使用变量。我用pdo来做这个。但我不能使用pdo占位符作为表名

这是有效的

$stmt = $db->prepare("SELECT * FROM table WHERE id=?");
$stmt->execute(array($id));
但事实并非如此

$stmt = $db->prepare("SELECT * FROM ? WHERE id=?");
$stmt->execute(array($table, $id));

我做错了什么?

这里有一个简单的答案

$statement = $db->prepare("SELECT * FROM table WHERE id=(:some_id)");
$statement->execute(array(':some_id' => $row['id']));
您应该为它提供key=>value格式

就这么做吧

$stmt = $db->prepare("SELECT * FROM ".$table." WHERE id=?");
$stmt->execute($id);

不能对表使用占位符


这应该不是问题,因为表名应该是您可以控制的。

您不能为表/字段名使用占位符-您已经在问题中回答了这个问题。。。您需要将它们插入字符串中;见:谢谢你的回复。我已经在用这个了。我只是想找到一些新的东西。投票否决它的原因是什么。