ホームページ >バックエンド開発 >PHPチュートリアル >PHP言語開発でデータベースクエリにmysql_queryを使用するにはどうすればよいですか?

PHP言語開発でデータベースクエリにmysql_queryを使用するにはどうすればよいですか?

王林
王林オリジナル
2023-06-11 08:44:262092ブラウズ

PHP 言語開発では、MySQL データベースを使用するのが非常に一般的です。mysql_query 関数は、PHP が MySQL データベースに接続するためのメソッドであり、データ クエリの基本的なメソッドの 1 つでもあります。この記事では、データベース クエリに mysql_query 関数を使用する方法を説明します。

1. mysql_query 関数を理解する

mysql_query は、MySQL サーバーにクエリを送信するために使用される PHP の関数で、通常、INSERT、UPDATE、DELETE、およびなどの変更操作を実行するために使用されます。 SELECT クエリ ステートメント。

基本的な構文構造は次のとおりです:

mysql_query(string $query , resource $connection = ?): mixed

このうち、"$query" は実行されるクエリ ステートメントであり、有効な SQL ステートメントである必要があります。 MySQL データベースに接続するための識別子。デフォルト値は、最後に開かれた接続です。

実行が成功した場合は、MySQL リソース識別子が返されます。それ以外の場合は、クエリの実行が失敗したことを意味する false が返されます。

2. mysql_query を使用してクエリを実行する

mysql_query を使用してクエリを実行する前に、まずデータベースに接続する必要があります。 mysqli_connect または PDO を使用してデータベースに接続できます。

MySQL データベースに接続するためのサンプル コードは次のとおりです。

// 服务器地址
$db_host = "localhost";
// 数据库用户名
$db_user = "root";
// 数据库密码
$db_password = "123456";
// 数据库名
$db_name = "mydatabase";

// 连接数据库
$link = mysql_connect($db_host, $db_user, $db_password) or die("连接失败!");

// 选择数据库
mysql_select_db($db_name, $link);

次に、mysql_query 関数を使用してクエリを実行できます。たとえば、student テーブル内のすべての学生情報をクエリします:

// 查询所有学生信息
$sql = "SELECT * FROM student";
$result = mysql_query($sql);

// 遍历结果集并输出每个学生的信息
while ($row = mysql_fetch_assoc($result)) { 
    echo '学生ID:'.$row['id'].',姓名:'.$row['name'].',年龄:'.$row['age'].'<br>'; 
}

上記のコードでは、「$sql」が実行されるクエリ ステートメントです。この例では、「student」テーブル内のすべてのレコードをクエリします。 ; 「$ result」は、クエリの実行によって返される結果セットです。同時に、この結果セットは mysql_fetch_assoc 関数を通じてトラバースできます。 mysql_fetch_assoc 関数は、現在の結果行を連想配列として返し、次の行へのポインタを指します。したがって、すべての結果セットは while ループを通過できます。

3. SQL インジェクションの回避

#​​##データ クエリに mysql_query 関数を使用する場合は、SQL インジェクションの問題を回避するように注意する必要があります。 SQL インジェクションとは、ハッカーがプログラム内の SQL ステートメントを使用して、不正な SQL ステートメントを実行したり、特定の特殊なコマンドや文字を入力して機密データを取得したりする攻撃方法を指します。アプリケーションのセキュリティを確保するには、SQL クエリを実行するときに入力パラメータを前処理する必要があります。

SQL インジェクションを回避するための主な方法をいくつか示します:

1. PHP の addlashes 関数を使用する

addslashes 関数の機能は、一重引用符 (') を削除することです。文字列では、SQL インジェクション攻撃を避けるために、二重引用符 (")、バックスラッシュ () およびその他の特殊文字がエスケープされます。

使用例:

// 防SQL注入处理函数
function filter($text) {
    if(!get_magic_quotes_gpc()) {
        $text = addslashes($text);    // 对单引号、双引号、反斜杠等进行转义处理
    }
    return $text;
}

// 读取提交的用户名和密码信息
$username = filter($_POST['username']);
$password = filter($_POST['password']);

// 查询用户信息
$sql = "SELECT * FROM user WHERE username='$username' AND password='$password'";
$result = mysql_query($sql);

2. PHP mysqli 拡張機能を使用します

mysqli は、PHP 拡張ライブラリのモジュールです。このモジュールは、MySQL が提供する API インターフェイス関数を提供し、SQL クエリ ステートメントを実行するための前処理をサポートします。

mysqli を使用してクエリを実行するためのサンプル コードは次のとおりです。 :

// 预处理查询
$stmt = mysqli_prepare($link, "SELECT * FROM user WHERE username=? AND password=?");
mysqli_stmt_bind_param($stmt, "ss", $username, $password);
mysqli_stmt_execute($stmt);

// 处理结果集
$result = mysqli_stmt_get_result($stmt);

// 遍历结果集并输出每行信息
while ($row = mysqli_fetch_assoc($result)) { 
    echo "用户名:".$row['username'].",密码:".$row['password']."<br>"; 
}

// 关闭会话句柄
mysqli_stmt_close($stmt);

3. PHP PDO 拡張機能を使用する

PDO は、データベースを操作するための PHP の拡張機能です。この拡張機能は、さまざまなデータベースをサポートし、前処理メソッドの完全なセットを提供します。

PDO を使用したクエリのサンプル コードは次のとおりです:

// 连接数据库
$db_host = "localhost";
$db_name = "mydatabase";
$db_user = "root";
$db_password = "123456";
$dsn = "mysql:host={$db_host};dbname={$db_name}";
$conn = new PDO($dsn, $db_user, $db_password);

// 预处理查询
$stmt = $conn->prepare("SELECT * FROM user WHERE username=:username AND password=:password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

// 处理结果集
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 遍历结果集并输出每行信息
foreach ($result as $row) {
    echo "用户名:".$row['username'].",密码:".$row['password']."<br>"; 
}

// 关闭连接
$conn = null;

4. 概要

この記事では、mysql_query 関数を使用して PDO を実行する方法を紹介します。データベース クエリ 、SQL インジェクション攻撃を回避するためのいくつかの方法も提案しています。初心者の場合は、上記の方法を学習して実践することができます。すでにこの知識を習得している開発者は、他の高度な PHP や MySQL の使用法をさらに学ぶことができます。いずれにしても、プログラムのセキュリティとデータの正確性を確保することは、開発者が常に考慮する必要がある重要な問題の 1 つです。

以上がPHP言語開発でデータベースクエリにmysql_queryを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。