ホームページ >バックエンド開発 >PHPの問題 >PHPでクエリを実行する方法

PHPでクエリを実行する方法

WBOY
WBOYオリジナル
2023-05-06 15:07:07708ブラウズ

PHP では、クエリはデータベースから必要なデータを取得または確認するために非常に頻繁に使用される操作です。これはデータベース内のコンテンツへのアクセスを提供するため、重要な基盤です。

この記事では、PHP でクエリを実行して Web アプリケーションをより強力にする方法について説明します。

1. データベースへの接続

クエリを開始する前に、データベース接続を確立する必要があります。 PDO (PHP Data Objects) または mysqli 拡張機能を使用できます。

PDO の使用:

$host = 'localhost';
$dbname = 'mydatabase';
$user = 'myusername';
$pass = 'mypassword';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    //设置错误模式为异常处理
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully!";
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

mysqli の使用:

$host = 'localhost';
$dbname = 'mydatabase';
$user = 'myusername';
$pass = 'mypassword';

// 创建连接
$conn = new mysqli($host, $user, $pass, $dbname);

// 检测连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully!";

2. クエリの実行

データベース接続を確立したら、クエリを実行できます。 。 PDO と mysqli を使用して SELECT クエリを実行する方法の例を次に示します。

PDO の使用:

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出结果
print_r($result);

mysqli の使用:

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM mytable";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

3. パラメータのバインド

クエリを実行するときは、通常、クエリが特定の条件を満たす結果のみを返すようにします。この場合、バインド パラメータを使用してクエリ条件をクエリ ステートメントから分離する必要があります。

次は、PDO と mysqli を使用してパラメーターをバインドする例です:

PDO の使用:

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出结果
print_r($result);

mysqli の使用:

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$name = "John Doe";

$sql = "SELECT * FROM mytable WHERE name = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $name);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

4. プリコンパイルされたクエリ

プリコンパイルされたクエリはデータベース クエリを最適化する方法であり、クエリ内でプレースホルダを使用して SQL インジェクション攻撃を回避できます。

次は、PDO と mysqli プリコンパイル済みクエリの使用例です:

PDO の使用:

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable WHERE name = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$name]);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出结果
print_r($result);

mysqli の使用:

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$name = "John Doe";

$sql = "SELECT * FROM mytable WHERE name = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $name);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

5. 結果セットの処理

クエリを実行したら、結果セットを処理する必要があります。これは、配列や JSON 文字列など、Web アプリケーションで使用できる適切な形式に結果セットをフォーマットすることを意味します。

以下は結果セットの処理例です:

PDO の使用:

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 格式化为JSON字符串
echo json_encode($result);

mysqli の使用:

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM mytable";
$result = $conn->query($sql);

// 格式化为数组
$data = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
}

// 格式化为JSON字符串
echo json_encode($data);

$conn->close();

要約

PHP では、クエリの実行は重要な基本であり、Web アプリケーションで頻繁に使用されます。 PDO または mysqli 拡張機能を使用してデータベース接続を確立し、SELECT クエリを使用して必要なデータを取得できます。クエリ条件にバインドされたパラメータが必要な場合は、クエリのセキュリティを確保するためにバインドされたパラメータとプリコンパイルされたクエリを使用する必要があります。最後に、結果セットを処理し、適切な Web アプリケーション データ形式にフォーマットする必要があります。

以上がPHPでクエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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