ここで何が間違っているのかわかりません。このクエリで WHERE 句を省略すると、サーバーはデータベースからすべての行を返します。だから私はその部分が機能することを知っています。WHERE句を使用する場合、つまり
WHERE name='$name' AND loc='$loc' -
結果は得られますが、bindValue を使用するか、execute コマンドでバインダーを渡すと、エラーもデータも得られません
$stmt = "SELECT * FROM table1 LEFT JOIN table2 ON table1.ID=table2.fkID".
" WHERE name = :name AND loc = :loc";
$binder = array(':name' => $name, ':loc' => $loc);
これは、これらのパラメーターを受け取る関数の場合
public function fetchData($stmt, $binder = array())
{
$DB = new PDO(........);
$STMT = $DB->prepare($stmt);
foreach ($binder as $key => $value):
$k = (is_numeric($key)) ? $key + 1 : $key;
if (is_int($value)):
$STMT->bindValue($k, (int) $value, PDO::PARAM_INT);
else:
$STMT->bindValue($k, $value, PDO::PARAM_STR);
endif;
endforeach;
try {
$STMT->execute();
return $STMT->fetchAll(PDO::FETCH_ASSOC);
}
catch (PDOException $e) {
die($this->error = $e->getMessage());
}
ここで何が間違っていますか。申し訳ありませんが、すべての質問を同様に検索しましたが、答えがありません。