WHERE子句中的Doctrine DBAL Params

时间:2015-10-06 22:15:23

标签: php mysql doctrine-orm doctrine

我正在尝试使用where子句中的参数过滤我的Doctrine DABL MySQL查询:

$ this-> dbConn指的是doctrine db connection。

$ this-> tableName保存正确的表名。

$sql = "SELECT * FROM {$this->tableName} WHERE `category` = 'armor' AND ? != ?";
$stmt = $this->dbConn->prepare($sql);

$ filterKey和$ filterVal包含正确的值。

$params = [
    $this->dbConn->quoteIdentifier($filterKey),
    $this->dbConn->quote($filterVal)
];

$stmt = $this->dbConn->executeQuery($sql, $params, [\PDO::PARAM_STR, \PDO::PARAM_STR]);

$result = $stmt->fetchAll();

$ result包含$ filterKey == $ filterVal与预期相反的行

以下也不起作用

$sql = "SELECT * FROM {$this->tableName} WHERE `category` = 'armor' AND :filterKey != :filterVal";
$stmt = $this->dbConn->prepare($sql);

$stmt->bindValue('filterKey', $this->dbConn->quoteIdentifier($filterKey), \PDO::PARAM_STR);
$stmt->bindValue('filterVal', $this->dbConn->quote($filterVal), \PDO::PARAM_STR);

$stmt->execute();
$result = $stmt->fetchAll();

$ result包含$ filterKey == $ filterVal与预期相反的行

我错过了一些基本的东西吗? 顺便说一下,我正在尝试不使用queryBuilder。

谢谢。

0 个答案:

没有答案