English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、PHPを使用してMySQLテーブルにレコードを挿入する方法を学びます。
今、MySQLでデータベースとテーブルの作成方法を学びました。このチュートリアルでは、レコードをテーブルに挿入するためのSQLクエリの実行方法を学びます。
INSERT INTO文はデータベーステーブルに新しい行を挿入するために使用されます。
適切な値を持つINSERT INTO文を使用してSQLクエリを実行し、そのINSERTクエリをPHP mysqli_query()関数に渡して実行し、データをテーブルに挿入するために、以下の例を使用します。first_name、last_name、emailフィールドの値はpersonsテーブルに新しい行を挿入します。
<?php $link = mysqli_connect("localhost", "root", "", "demo"); // 接続を確認する if($link === false) {}} die("エラー:接続できません。 " . mysqli_connect_error()); } //挿入クエリを実行しようと試みます $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')"; if(mysqli_query($link, $sql)){ echo "レコード挿入成功。"; } エコー「エラー:$sqlを実行できません」 . mysqli_error($link); } //接続を閉じる mysqli_close($link); ?>
<?php $mysqli = new mysqli("localhost", "root", "", "demo"); //接続を確認する if($mysqli === false) { die("ERROR: Could not connect. " . $mysqli->connect_error); } //挿入クエリを実行しようと試みます $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')"; if($mysqli-query($sql) === true) { echo "レコード挿入成功。"; } エコー「エラー:$sqlを実行できません」。->error; } //接続を閉じる $mysqli->close(); ?>
<?php try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //PDOエラーモードを例外に設定する $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ die("ERROR: Could not connect. " . $e->getMessage()); } //挿入クエリを実行しようと試みます try{ $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')"; $pdo->exec($sql); echo "レコード挿入成功。"; } catch(PDOException $e){ die("エラー:$sqlを実行できません。" . $e);->getMessage()); } //接続を閉じる unset($pdo); ?>
覚えている場合前章の内容、次にidフィールドにAUTO_INCREMENTフラグが設定されています。この修飾子はMySQLに、値が指定されていない場合、前の値を増加させることを指示します。1自動的に値を割り当てるために
一度に複数の行を挿入するために、INSERT INTO文に複数の列値リストを含め、各行の列値は括弧で囲まれ、カンマで区切られる必要があります。
私たちがpersons以下のように、テーブルにいくつかの行を追加します:
<?php $link = mysqli_connect("localhost", "root", "", "demo"); //接続を確認する if($link === false) {}} die("エラー:接続できません。 " . mysqli_connect_error()); } //挿入クエリを実行しようと試みます $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('John', 'Rambo', '[email protected]'), ('Clark', 'Kent', '[email protected]'), ('John', 'Carter', '[email protected]'), ('Harry', 'Potter', '[email protected]')"; if(mysqli_query($link, $sql)){ エコー「レコード追加成功。」; } エコー「エラー:$sqlを実行できません」 . mysqli_error($link); } //接続を閉じる mysqli_close($link); ?>
<?php $mysqli = new mysqli("localhost", "root", "", "demo"); //接続を確認する if($mysqli === false) { die("ERROR: Could not connect. " . $mysqli->connect_error); } //挿入クエリを実行しようと試みます $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('John', 'Rambo', '[email protected]'), ('Clark', 'Kent', '[email protected]'), ('John', 'Carter', '[email protected]'), ('Harry', 'Potter', '[email protected]')"; if($mysqli-query($sql) === true) { echo "レコード挿入成功。"; } エコー「エラー:$sqlを実行できません」。->error; } //接続を閉じる $mysqli->close(); ?>
<?php try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //PDOエラーモードを例外に設定する $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ die("エラー:接続できません。 " . $e->getMessage()); } //挿入クエリを実行しようと試みます try{ $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('John', 'Rambo', '[email protected]'), ('Clark', 'Kent', '[email protected]'), ('John', 'Carter', '[email protected]'), ('Harry', 'Potter', '[email protected]')"; $pdo->exec($sql); echo "レコード挿入成功。"; } catch(PDOException $e){ die("エラー:$sqlを実行できません。" . $e);->getMessage()); } //接続を閉じる unset($pdo); ?>
今、phpMyAdmin(http:)に移動します//localhost/phpmyadmin/),並確認デモデータベース内の人員テーブルデータが増加すると、IDの値は、前のIDの値が増加します。1自動的に割り当てられます。
注意: SQL文内には任意の改行符が発生できますが、キーワード、値、式などが破壊されないことを確認してください。
前節では、PHPスクリプトからデータをデータベースに挿入する方法を学びました。今度は、HTMLフォームからデータをデータベースに挿入する方法を見てみましょう。新しい記録を追加するために使用できるHTMLフォームを作成しましょう。人員表。
これはシンプルなHTMLフォームで、3つのテキストフィールドと送信ボタンを含んでいます。<input>フィールドと送信ボタンを含む。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8> <title>Add Record Form</title> </head> <form action="insert.php" method="post"> <p> <label for="firstName">First Name:</label>/label> <input type="text" name="first_name" id="firstName"> </p> <p> <label for="lastName">Last Name:</label>/label> <input type="text" name="last_name" id="lastName"> </p> <p> <label for="emailAddress">Email Address:</label>/label> <input type="text" name="email" id="emailAddress"> </p> <input type="submit" value="Submit"> </form> </html>テストしてみる‹/›
上記の例では、ユーザーが追加記録のHTMLフォームの送信ボタンをクリックすると、フォームデータが“insert.php”ファイルに送信されます。“insert.php”ファイルはMySQLデータベースサーバーに接続し、PHP $_REQUEST変数を使用してフォームフィールドを検索し、最終的に記録を追加するためのINSERTクエリを実行します。これは“insert.php”ファイルの完全なコードです:
<?php $link = mysqli_connect("localhost", "root", "", "demo"); //接続を確認する if($link === false) {}} die("ERROR: Could not connect. " . mysqli_connect_error()); } //ユーザー入力を安全にエスケープするために $first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']); $last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']); $email = mysqli_real_escape_string($link, $_REQUEST['email']); //挿入クエリを実行しようと試みます $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')"; if(mysqli_query($link, $sql)){ エコー「レコード追加成功。」; } エコー「エラー:$sqlを実行できません」 . mysqli_error($link); } //接続を閉じる mysqli_close($link); ?>
<?php $mysqli = new mysqli("localhost", "root", "", "demo"); //接続を確認する if($mysqli === false) { die("エラー:接続できません。" . $mysqli->connect_error); } //ユーザー入力を安全にエスケープするために $first_name = $mysqli->real_escape_string($_REQUEST['first_name']); $last_name = $mysqli->real_escape_string($_REQUEST['last_name']); $email = $mysqli->real_escape_string($_REQUEST['email']); //挿入クエリを実行しようと試みます $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')"; if($mysqli-query($sql) === true) { echo "レコード挿入成功。"; } エコー「エラー:$sqlを実行できません」。->error; } //接続を閉じる $mysqli->close(); ?>
<?php try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //PDOエラーモードを例外に設定する $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ die("エラー:接続できません。" . $e);->getMessage()); } //挿入クエリを実行しようと試みます try{ //CREATE PREPARE文 $sql = "INSERT INTO persons (first_name, last_name, email) VALUES (:first_name, :last_name, :email)"; $stmt = $pdo->prepare($sql); //パラメータをクエリにバインドする $stmt->bindParam(':first_name', $_REQUEST['first_name']); $stmt->bindParam(':last_name', $_REQUEST['last_name']); $stmt->bindParam(':email', $_REQUEST['email']); //準備されたクエリを実行する $stmt->execute(); echo "レコード挿入成功。"; } catch(PDOException $e){ die("エラー:$sqlを実行できません。" . $e);->getMessage()); } // 接続を閉じる unset($pdo); ?>
次の章では、この挿入クエリの例を拡張し、以下を実装していく予定です。準備されたクエリセキュリティとパフォーマンスをさらに向上させるために、これをさらに発展させることをお勧めします。
注意:mysqli_real_escape_string()関数は、特殊文字をエスケープして合法なSQL文字列を作成し、以下を提供して防止します。SQLインジェクションのセキュリティ。
これはMySQLデータベーステーブルにフォームデータを挿入する非常に基本的な例です。この例を拡張して、ユーザー入力にバリデーションを追加し、データベーステーブルに挿入する方法を学びましょう。さらに詳しい情報は、以下を参照してください。PHPフォームバリデーションのチュートリアルを参照して、PHPを使用してユーザー入力をクリーンアップおよびバリデーションする情報についてもっと詳しく学びましょう。