English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本チュートリアル

PHP上級チュートリアル

PHP & MySQL

PHPリファレンスマニュアル

PHP MySQL データの挿入

このチュートリアルでは、PHPを使用してMySQLテーブルにレコードを挿入する方法を学びます。

データをMySQLデータベースのテーブルに挿入する

今、MySQLでデータベースとテーブルの作成方法を学びました。このチュートリアルでは、レコードをテーブルに挿入するためのSQLクエリの実行方法を学びます。

INSERT INTO文はデータベーステーブルに新しい行を挿入するために使用されます。

適切な値を持つINSERT INTO文を使用してSQLクエリを実行し、そのINSERTクエリをPHP mysqli_query()関数に渡して実行し、データをテーブルに挿入するために、以下の例を使用します。first_namelast_nameemailフィールドの値は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();
?>

例:PDOメソッド

<?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();
?>

例:PDOメソッド

<?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文内には任意の改行符が発生できますが、キーワード、値、式などが破壊されないことを確認してください。

HTMLフォームからデータベースにデータを挿入する

前節では、PHPスクリプトからデータをデータベースに挿入する方法を学びました。今度は、HTMLフォームからデータをデータベースに挿入する方法を見てみましょう。新しい記録を追加するために使用できるHTMLフォームを作成しましょう。人員表。

手順1: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>
テストしてみる‹/›

手順2:フォームデータの検索と挿入

上記の例では、ユーザーが追加記録の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();
?>

例:PDOメソッド

<?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を使用してユーザー入力をクリーンアップおよびバリデーションする情報についてもっと詳しく学びましょう。