web-dev-qa-db-ja.com

PHPで準備されたステートメントを使用してMySQLに挿入する方法

データベースについて学習しているだけで、ユーザー入力を保存できるようにしたいと考えています。フォームデータを取得し、PHPを使用してデータベースに保存する方法の基本的な例は何でしょうか。

また、フォームを SQL攻撃 から保護します。

27
bammab

ファイルsample.html

<form action="sample.php" method="POST">
    <input name="sample" type="text">
    <input name="submit" type="submit" value="Submit">
</form>

ファイルsample.php

<?php
    if (isset($_POST['submit'])) {

        $mysqli = new mysqli('localhost', 'user', 'password', 'mysampledb');

        /* Check connection */
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }

        $stmt = $mysqli->prepare("INSERT INTO SampleTable VALUES (?)");
        $stmt->bind_param('s', $sample);   // Bind $sample to the parameter

        $sample = isset($_POST['sample'])
                  ? $_POST['sample']
                  : '';

        /* Execute prepared statement */
        $stmt->execute();

        printf("%d Row inserted.\n", $stmt->affected_rows);

        /* Close statement and connection */
        $stmt->close();

        /* Close connection */
        $mysqli->close();
    }
?>

これは非常に基本的な例です。多くのPHP今日の開発者は [〜#〜] pdo [〜#〜] に注目しています。Mysqliは時代遅れではありませんが、PDOはmuchより簡単に、私見。

26
Herbert