【发布时间】:2014-08-17 01:34:33
【问题描述】:
我尝试像往常一样使用好的 PDO,几乎一切正常,但只有一个查询:
$primary = 'my_id';
$table = 'my_table';
// This or...
$statement = $this->conn->prepare("SELECT MAX(:id) AS id FROM :table");
$statement->bindParam(':id', $primary, PDO::PARAM_STR);
$statement->bindParam(':table', $table, PDO::PARAM_STR);
$statement->setFetchMode(PDO::FETCH_ASSOC);
$statement->execute();
// This one. Both doesn't work.
$statement = $this->conn->prepare("SELECT MAX(:id) AS id FROM :table");
$statement->setFetchMode(PDO::FETCH_ASSOC);
$arr = array(
':id' => 'my_id',
':table' => 'my_table',
);
$statement->execute($arr);
这些只是返回一个空数组。我感到很困惑。所以我试过了:
$statement = $this->conn->prepare("SELECT MAX(".$primary.") AS id FROM ".$table);
$statement->setFetchMode(PDO::FETCH_ASSOC);
$statement->execute();
而且它有效。我觉得我错过了一些东西,但无法弄清楚。很明显,绑定存在问题,我尝试了不同的变体,例如手动编写变量之一,但到目前为止没有运气。
提前感谢您的帮助...
【问题讨论】:
-
@Fabio 我从没想过。这就是我所缺少的。非常感谢...
-
是的!不客气,伙计
-
如果我只用正则表达式检查表或列名称字符串并像“SELECT * FROM $table”一样使用它,会有副作用吗?