1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SQLでのinsertを死ぬほど楽にする関数を作った。

Posted at

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オブジェクトを自分で作ってしまい、それを組み込むように適宜変更してください。
(丸投げ)

終わりに

問題点・アドバイスがあれば、ぜひ教えていただけると助かります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?