SQLを動的に生成し、PDOとプリペアドステートメントを使用して、列名/where句をハードコーディングせずに実行する関数を作成しようとしています。where句の「Calories」と「Colour」がハードコーディングされている以下の例では、状況に応じてwhere句を少なくするか、まったく追加しない機能を追加したいと思います。
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array($calories, $colour));
これは、私が作成した値を動的に渡すことができる挿入関数です。
public function insert($table,$columnValueArray){
$columns = implode(",",array_keys($columnValueArray));
$sql = "INSERT INTO ".$table." (?) VALUES (?)";
$sth = $conn->prepare($sql);
foreach($columnValueArray as $singleArray){
$values = implode(",",$singleArray);
$sth->execute(array($columns),$values);
}
}
これと同様の関数で更新関数を作成したいのですが、問題は、更新関数に配列の各行で変更できるwhere句が必要なことです。