PHP は、動的 Web サイト、Web アプリケーション、電子商取引サイトなど、さまざまな種類の Web アプリケーションの構築に使用できる人気のあるサーバー側スクリプト言語です。データベースは、あらゆる野心的な Web アプリケーションの中核であり、アプリケーションに必要なデータの保存と管理に使用されます。
PHP には、データベースと対話するための関数と拡張機能が多数あります。この記事では、PHP データベース操作関数を使用して、これらの関数をより効果的に使用してデータベースと対話するためのヒントをいくつか紹介します。
PHP を使用してデータベースに接続するために最も一般的に使用される関数は、mysqli_connect() です。この関数のプロトタイプは次のとおりです。
mysqli mysqli_connect ( string $host , string $username , string $passwd , string $dbname [, int $port = 3306 [, string $socket = '' ]] )
ここで、$host はデータベースのホスト名または IP アドレスを表し、$username と $passwd はデータベースのユーザー名とパスワード、$dbname はデータベースの名前です。接続されており、$port はポート番号、$socket はソケット ファイルです。
データベースへの接続例:
// 连接数据库 $mysqli = mysqli_connect("localhost", "root", "password", "mydatabase"); // 检查连接是否成功 if (!$mysqli) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully";
データベースへの接続に成功すると、さまざまな SQL ステートメントを実行できます。 PHP を使用して SQL ステートメントを実行するには、mysqli_query() と mysqli_prepare() という 2 つの基本的な方法があります。
2.1 mysqli_query()
mysqli_query() 関数のプロトタイプは次のとおりです:
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
このうち、$link はデータベースに接続されている mysqli オブジェクトを表し、$query は実行される SQL ステートメント、$resultmode は結果セットのタイプを指定します。
SQL クエリ ステートメントの実行例:
$sql = "SELECT id, name FROM users"; $result = mysqli_query($mysqli, $sql); if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. "
"; } } else { echo "0 results"; }
SQL 挿入、更新、削除ステートメントの実行例:
// 插入数据 $sql = "INSERT INTO users (name, age) VALUES ('John', 25)"; if (mysqli_query($mysqli, $sql)) { echo "New record created successfully"; } else { echo "Error: " . $sql . "
" . mysqli_error($mysqli); } // 更新数据 $sql = "UPDATE users SET age=30 WHERE name='John'"; if (mysqli_query($mysqli, $sql)) { echo "Record updated successfully"; } else { echo "Error updating record: " . mysqli_error($mysqli); } // 删除数据 $sql = "DELETE FROM users WHERE id=3"; if (mysqli_query($mysqli, $sql)) { echo "Record deleted successfully"; } else { echo "Error deleting record: " . mysqli_error($mysqli); }
2.2 mysqli_prepare()
mysqli_prepare( ) 関数 SQL クエリ ステートメントを準備するために使用されますが、直接実行することはありません。これは、SQL インジェクション攻撃の防止に役立ちます。 mysqli_stmt_bind_param() 関数を通じてパラメータをバインドし、mysqli_stmt_execute() 関数を使用してクエリを実行する必要があります。
mysqli_prepare() 関数のプロトタイプは次のとおりです。
mysqli_stmt mysqli_prepare ( mysqli $link , string $query )
このうち、$link はデータベースに接続されている mysqli オブジェクトを表し、$query は実行される SQL クエリ文です。
SQL クエリ ステートメントの実行例:
$sql = "SELECT id, name, age FROM users WHERE age > ?"; $stmt = mysqli_prepare($mysqli, $sql); if ($stmt) { mysqli_stmt_bind_param($stmt, "i", $age); $age = 20; mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $id, $name, $age); while (mysqli_stmt_fetch($stmt)) { echo "id: " . $id . ", name: " . $name . ", age: " . $age; } mysqli_stmt_close($stmt); } else { echo "Error in preparing statement: " . mysqli_error($mysqli); }
データベース操作を処理するとき、1 つのトランザクションで複数の SQL ステートメントを実行する必要がある場合があります。このとき、データベーストランザクションは非常に役立ちます。
PHP を使用してデータベース トランザクションを実行するには、次の関数を使用する必要があります:
例:
// 关闭自动提交事务 mysqli_autocommit($mysqli, FALSE); // 执行多个SQL语句 mysqli_query($mysqli, "INSERT INTO users (name, age) VALUES ('John', 25)"); mysqli_query($mysqli, "UPDATE users SET age=30 WHERE name='John'"); // 如果所有SQL语句都成功执行,则提交事务 mysqli_commit($mysqli); echo "Transaction committed successfully"; // 如果任何一个SQL语句执行失败,则回滚事务 mysqli_rollback($mysqli); echo "Transaction rolled back because of failure";
データベース操作が完了したら、必ずデータベース接続を閉じてリソースを解放してください。 。
mysqli_close() 関数を使用してデータベース接続を閉じます。
// 关闭数据库连接 mysqli_close($mysqli); echo "Connection closed";
概要
この記事では、PHP でデータベースに接続し、SQL ステートメント、トランザクションを実行し、データベース接続を閉じる手法を紹介します。 PHP には、データベースと対話するためのさまざまな関数と拡張機能が用意されており、これらの関数を使いこなすと、Web アプリケーションの作成作業が大幅に簡素化されます。同時に、SQL インジェクションやその他のセキュリティ脆弱性のリスクを軽減するために、データベース操作におけるセキュリティのベスト プラクティスに注意してください。
以上がPHPデータベース操作機能の使い方のヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。