データベースにクエリを実行する関数があります。
public function query($sql, $params = array()) {
// reset error back to false
$this->_error = false;
// check query to prepare
if($this->_query = $this->_pdo->prepare($sql)) {
$x = 1;
if(count($params)) {
foreach($params as $param) {
$this->_query->bindValue($x, $param);
$x++;
}
print_r($this->_pdo->errorInfo());
}
// check query execution
if ($this->_query->execute()) {
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
} else {
// error
$this->_error = true;
}
}
return $this;
}
しかし、うまくいかないことがあります。ライン$this->_query->bindValue($x, $param);
は本来すべきことをしていません。拘束力はありません。関数にパラメーターがスローされた配列は問題ないようです。$sql
ステートメントも問題なく、次のように返されます。
INSERT INTO responders (`username`, `password`, `salt`) VALUES (?, ?, ?)
これは bind メソッドを使用するのに最適なはずです。しかし、 foreach ループを通過した後、何も変更されておらず、 _query var は同じままです。したがって、DB へのエントリはまったく作成されません。また、エラー情報を使用するためにツリーを作成し、戻ってきました。
Array ( [0] => 00000 [1] => [2] => )
ここで何が欠けているのか、誰かが私に手がかりを与えることができますか?