我正在尝试使用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。
谢谢。