У меня небольшая проблема при написании простого класса, который использует PDO для подключения к БД.
Проблема в том, что PDOStatement :: bindParam не работает после первого вызова в цикле, я имею в виду, если у меня естьдва параметра для передачи в PDOStatement запрос не возвращает точный результат, вместо этого, если я даю только один параметр, он дает правильный результат.
Вот код:
public function query($sql, $params = NULL) {
// Opens the PDO connection
$this->open();
$this->stmt = $this->pdo->prepare($sql);
if (isset($params)) {
foreach ($params as $key => $value) {
// This doesn't work after the second cicle.
$this->stmt->bindParam(':' . $key, $value);
}
}
$result = NULL;
if (!$this->stmt->execute()) {
$result = false;
} else {
$result = $this->stmt->fetchAll();
}
// Closes the PDO connection
$this->close();
return $result;
}
Ивот PDOStatement :: debugDumpParams:
SQL: [114]
SELECT 1
FROM users
WHERE EXISTS
(
SELECT *
FROM users
WHERE username = :username
AND password = :password) limit 1
PARAMS: 2
KEY:NAME: [9] :username paramno=0 NAME=[9] ":username" is_param=1 param_type=2
KEY:NAME: [9] :password paramno=1 NAME=[9] ":password" is_param=1 param_type=2
Спасибо за помощь!