PHPからデータベースを操作(mysqli_xxx関数を使用した場合)

(ブログ記事の一覧は「こちら」)

PHPからSQLを実行してデータベースにアクセスする方法について、本編ではPDOクラスを使用しました。ここでは、mysqli_xxx関数を使用した場合のプログラムを掲載します。

準備

本編で用意したデータベース(db_food)とテーブル(fruits_list)を使用します。まだ作成していない場合は、本編の PHPからデータベースを操作(データの表示、検索)を参考にしてください。

また、PHPプログラム「dbConfig.php」も同じものを使用します。

プログラム

mysqli_xxx関数を使用したデータの抽出、検索、挿入、更新、削除のプログラムを示します。

データの抽出

レコード抽出のPHPプログラム「getFoodName_receive_mysqli.php」を作成して、「food」フォルダに置きます。

<?php
    require_once('./dbConfig.php');

    // 接続
    $link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
    if ($link == null) {
        die("接続に失敗しました");
    }

    mysqli_set_charset($link, "utf8");

    // レコード抽出
    $sql = "SELECT * FROM fruits_list";
    $result = mysqli_query($link, $sql);

    echo "<ul>";
    foreach ($result as $row) {
        echo "<li>" . $row['name'] . "</li>";
    }
    echo "</ul>";

    mysqli_free_result($result);
    mysqli_close($link);
?>

実行、確認

以下を実行すると、テーブル内のレコード一覧が表示されます。

http://localhost/sample/food/getFoodName_receive_mysqli.php


データの検索

レコード検索のPHPプログラム「searchFoodName_receive_mysqli.php」を作成して、「food」フォルダに置きます。

<?php
    require_once('./dbConfig.php');

    $name = $_GET['name'];
    if (empty($name) == true) {
        die("'name'の設定なし");
    }

    // 接続
    $link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
    if ($link == null) {
        die("接続に失敗しました");
    }

    mysqli_set_charset($link, "utf8");

    // レコード検索
    $sql = "SELECT * FROM fruits_list WHERE name=?";
    $stmt = mysqli_prepare($link, $sql);
    mysqli_stmt_bind_param($stmt, "s", $name);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);    // 検索結果を取得
    mysqli_stmt_close($stmt);

    echo "<ul>";
    foreach ($result as $row) {
        echo "<li>" . $row['name'] . "</li>";
    }
    echo "</ul>";

    mysqli_free_result($result);
    mysqli_close($link);
?>

実行、確認

以下を実行すると、指定したキーワードを含むレコード一覧が表示されます。

http://localhost/sample/food/searchFoodName_receive_mysqli.php?name=メロン


データの挿入

レコード追加のPHPプログラム「insertFood_receive_mysqli.php」を作成して、「food」フォルダに置きます。

<?php
    require_once('./dbConfig.php');

    $name = $_GET['name'];
    if (empty($name) == true) {
        die("'name'の設定なし");
    }

    $price = $_GET['price'];
    if (empty($price) == true) {
        die("'price'の設定なし");
    }

    // 接続
    $link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
    if ($link == null) {
        die("接続に失敗しました");
    }

    mysqli_set_charset($link, "utf8");

    // レコード追加
    $sql = "INSERT INTO fruits_list (id, name, price) VALUES (?, ?, ?)";
    if ($stmt = mysqli_prepare($link, $sql)) {
        mysqli_stmt_bind_param($stmt, "isi", $id, $name, $price);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_close($stmt);
    }

    mysqli_close($link);

    echo $name . "を" . $price . "円で追加しました。";
?>

実行、確認

以下を実行すると、レコード「メロン 1000円」が追加されます。

http://localhost/sample/food/insertFood_receive_mysqli.php?name=メロン&price=1000


データの更新

レコード追加のPHPプログラム「updateFoodPrice_receive_mysqli.php」を作成して、「food」フォルダに置きます。

<?php
    require_once('./dbConfig.php');

    $name = $_GET['name'];
    if (empty($name) == true) {
        die("'name'の設定なし");
    }

    $price = $_GET['price'];
    if (empty($price) == true) {
        die("'price'の設定なし");
    }

    // 接続
    $link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
    if ($link == null) {
        die("接続に失敗しました:" . mysqli_connect_error());
    }

    mysqli_set_charset($link, "utf8");

    // レコード更新
    $sql = "UPDATE fruits_list SET price = ? WHERE name = ?";
    if ($stmt = mysqli_prepare($link, $sql)) {
        mysqli_stmt_bind_param($stmt, "is", $price, $name);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_close($stmt);
    }

    mysqli_close($link);

    echo $name . "を" . $price . "円に変更しました。";
?>

実行、確認

以下を実行すると、レコード「みかん」が「180円」に更新されます。

http://localhost/sample/food/updateFoodPrice_receive_mysqli.php?name=みかん&price=180


データの削除

レコード削除のPHPプログラム「deleteFood_receive_mysqli.php」を作成して、「food」フォルダに置きます。

<?php
    require_once('./dbConfig.php');

    $name = $_GET['name'];
    if (empty($name) == true) {
        die("'name'の設定なし");
    }

    // 接続
    $link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
    if ($link == null) {
        die("接続に失敗しました:" . mysqli_connect_error());
    }

    mysqli_set_charset($link, "utf8");

    // レコード削除
    $sql = "DELETE FROM fruits_list WHERE name = ?";
    if ($stmt = mysqli_prepare($link, $sql)) {
        mysqli_stmt_bind_param($stmt, "s", $name);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_close($stmt);
    }

    mysqli_close($link);

    echo $name . "を削除しました。";
?>

実行、確認

以下を実行すると、レコード「みかん」が削除されます。

http://localhost/sample/food/deleteFood_receive_mysqli.php?name=みかん