愚かにも mysqli で Web アプリケーションを構築しました。現在、データ抽象化レイヤーを pdo に変換しようとしていますが、何らかの理由で挿入クエリが問題を引き起こしています。私のショートカット挿入関数はコントローラーから呼び出され、テーブル名と列/値の配列をパラメーターとして使用して、名前形式で保持したいと考えていました。
問題があると思う場所を以下にコメントしました。助けてください。
function insert($table, array $columns_values) {
// connect to db
$dbh = $this->db_connect();
$i = 0;
$columns = array();
$values = array();
$params = array();
foreach($columns_values as $column => $value) {
$i++;
$param = array($i => $value);
array_push($params, $param);
array_push($columns, $column);
array_push($values, '?');
}
// turn arrays into comma separated list
$columns = implode(",", $columns);
$values = implode(",", $values);
$stmt = $dbh->prepare("INSERT INTO $table ($columns) VALUES ($values)");
foreach ($params as $param_stmt) {
// i think this is where the problem is
foreach ($param_stmt as $placeholder => $value) {
$stmt->bindParam($placeholder, $value);
}
}
$stmt->execute();
return $stmt;
} // end insert()