Php 在PDO准备的语句中使用参数

Php 在PDO准备的语句中使用参数,php,mysql,pdo,schema,Php,Mysql,Pdo,Schema,在我看来,这个cose对于标准查询来说是可以的,但对于描述: $q = $dbh->prepare("DESCRIBE ?"); $q->execute(array($this->ormTable)); $table_fields = $q->fetchAll(PDO::FETCH_ASSOC); 有人能证实吗?除了手动追加表名之外,还有其他解决方法吗?确保ormTable不会受到外部(SQL注入等)的影响,也不会因语法使用而被正确引用(不要为此使用PDO::quote

在我看来,这个cose对于标准查询来说是可以的,但对于描述:

$q = $dbh->prepare("DESCRIBE ?");
$q->execute(array($this->ormTable));
$table_fields = $q->fetchAll(PDO::FETCH_ASSOC);

有人能证实吗?除了手动追加表名之外,还有其他解决方法吗?

确保ormTable不会受到外部(SQL注入等)的影响,也不会因语法使用而被正确引用(不要为此使用PDO::quote()


我不认为可以将绑定参数用于表名,不能将参数绑定到表名、字段名或任何与SQL语法相关的内容。使用PHP$变量代替。正如dbf所说,使用变量插入SQL查询部分–但请先使用@feeela转义它们,是的,我已经问过了,我不应该先转义吗?!(使用'PDO::quote')是:
$dbh->prepare('description'.$dbh->quote('this->ormTable))没错,我有这个顾虑。。。谢谢lot@feeela我想那是行不通的。我知道引号是针对值的,而不是针对字段或表名之类的实体。我想在清理变量后,我必须自己用反勾号来引用它。
$q = $dbh->prepare("DESCRIBE ".$this->ormTable);
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_ASSOC);
$q = $dbh->prepare(sprintf('DESCRIBE %s', $this->ormTable));
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_ASSOC);