0

私は PDO を理解しようとしてきましたが、insert ステートメントについて質問があります。値の配列を追加しようとしています (つまり、次の例)

data = array (
    fname -> Jay
    lname -> Doe
    phone -> 8137587733
    email -> me@me.com
);

フィールドと値は、次のように文字列に分割されます。

$fields = '`' . implode('`, `', array_keys($data)) . '`';
$values = '\'' . implode('\', \'', $data) . '\'';

...しかし、SQL インジェクションの可能性を防ぐために、準備済みステートメントを使用できるようにしたいと考えています。

すべてのフィールドが必須というわけではありません。たとえば、電話 ($_POST['phone'] から取得) は空である可能性があり、データベース フィールドはこのフィールドに NULL 入力を受け入れます。

古い方法はできますか:

mysql_query("INSERT INTO 'users' ($fields) VALUES ($values)");

PDOで使用するために何らかの形で適応するか、次のことを行う必要がありますか:

$sql = "INSERT INTO users VALUES (:fname, :lname, :phone:, :email)";
$st = $conn->prepare($sql);
$st->bindValue( ":fname", ???, PDO::PARAM_STR );
$st->bindValue( ":lname", ???, PDO::PARAM_STR );
$st->bindValue( ":phone", ???, PDO::PARAM_STR );
$st->bindValue( ":email", ???, PDO::PARAM_STR );
$st->execute();

ここで、値を入力する方法がわかりません(したがって、???)。

4

0 に答える 0