INSERT、めんどくさいですよね?
あのプリペアドステートメントとか、苦しくて苦しくてやっていられるもんじゃあありません。
そこで、SQLでinsertを死ぬほど楽にする関数を作りました。
一応、セキュリティーを考えているつもりですが、何か問題点があったら教えてください。
コード
<?php
function insertData($db_name, $db_user, $db_pass, $db_tablename, $insert_data) {
try {
$conn = new PDO("mysql:host=localhost;dbname=$db_name", $db_user, $db_pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$keys = array_keys($insert_data);
$values = array_values($insert_data);
$num_values = count($values);
$placeholders = implode(',', array_fill(0, $num_values, '?'));
$stmt = $conn->prepare("INSERT INTO $db_tablename (" . implode(',', $keys) . ") VALUES ($placeholders)");
$stmt->execute($values);
$conn = null;
return true;
} catch(PDOException $e) {
return false;
}
}
?>
デリケート
以前、この種の関数をqiitaに投稿した際、データベースパスワードなどのセキュアな情報をいちいち持ち運ぶのはどうか、という意見をいただいたことがあります。
その際は、pdoオブジェクトを自分で作ってしまい、それを組み込むように適宜変更してください。
(丸投げ)
終わりに
問題点・アドバイスがあれば、ぜひ教えていただけると助かります。