Я создаю объект базы данных, который соединяет объект PDO с объектом PDOStatement, чтобы цепочка была доступна. В основном я просто использую методы, которые я чаще всего использую, но bindParam дает мне трудное время.
private $stmt = null;
...
public function prepare($statement,array $driver_options = array()) {
    if($this->stmt) throw new \Exception('PDO Statement already prepared, no override!');
    $this->stmt = parent::prepare($statement, $driver_options);
    return $this;
}
public function bindParam($place, &$val, $dataType){
    if(!$this->stmt) throw new \Exception('PDO Statement is empty');
    $this->stmt->bindParam($place, $val, $dataType);
    return $this;
}
public function execute(array $params = array()){
    if(!$this->stmt) throw new \Exception('PDO Statement is empty');
    $this->stmt->execute($params);
    return $this;
}
public function fetchAll($pdoFetchType){
    if(!$this->stmt) throw new \Exception('PDO Statement is empty');
    return $this->stmt->fetchAll($pdoFetchType);
}
...
public function getStmt(){
    return $this->stmt;
}
public function clearStmt(){
    $this->stmt = null;
}
Я получаю ошибку, начиная с заголовка, в этом коде:
$i = 0;
$db->prepare('SELECT * FROM users LIMIT ?,1')->bindParam(1, $i, \PDO::PARAM_INT);
while($row = $db->execute()->fetchAll(\PDO::FETCH_ASSOC)){
    echo "<pre>".print_r($row, true)."</pre>";
    $i++;
}
В основном то, что я узнал об этой ошибке, заключается в том, что оно возникает, когда предоставленные переменные в bindParam равны null, но $i явно не является нулевым. Можете ли вы мне помочь?
EDIT: также работает
var_dump($this->stmt->bindParam($place, $val, $dataType));
в методе bindParam возвращает TRUE. Из руководства:
Возвращаемые значения
Возвращает TRUE при успешном завершении или FALSE при сбое.
Успешно, но не связывает параметр??? Я чувствую, что мой мозг скоро взорвется.
