首頁 >後端開發 >PHP問題 >php 怎麼查詢

php 怎麼查詢

王林
王林原創
2023-05-07 09:12:06937瀏覽

隨著網路技術的發展,資料庫成為了資料儲存的重要手段。而PHP是一種廣泛使用的伺服器端腳本語言,在網站開發中也扮演了重要的角色。在PHP中,查詢資料庫是開發中常用的操作之一。那麼,本文將介紹在PHP中如何進行查詢操作。

一、連接資料庫

在進行查詢操作之前,我們需要先連接資料庫。 PHP提供了一個內建函數mysqli_connect(),它用來開啟到MySQL伺服器的新連線。此函數需要傳入伺服器位址、使用者名稱、密碼以及資料庫名稱等參數。範例程式碼如下:

<?php
$servername = "localhost";
$username = "yourusername";
$password = "yourpassword";
$dbname = "yourdbname";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检测连接是否成功
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

在上述程式碼中,我們傳遞了四個參數:伺服器位址、使用者名稱、密碼、資料庫名稱。如果連線失敗,則透過mysqli_connect_error()函數輸出錯誤訊息。如果連接成功,則輸出「Connected successfully」。

二、執行查詢語句

在連線成功後,我們可以使用mysqli_query()函數執行查詢語句。它需要傳入兩個參數:連接物件和要執行的SQL語句。範例程式碼如下:

<?php
$sql = "SELECT id, name, age FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // 输出数据
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Age: " . $row["age"]. "<br>";
    }
} else {
    echo "0 results";
}

// 关闭连接
mysqli_close($conn);
?>

在上述程式碼中,我們執行了一則SELECT語句,從users表中查詢出id、name和age列的資料。我們使用mysqli_query()函數執行該語句,並將結果儲存在$result中。如果查詢到了數據,則透過mysqli_fetch_assoc()函數逐行讀取結果集中的數據,並輸出到頁面。如果未查詢到數據,則輸出「0 results」。最後,我們使用mysqli_close()函數關閉連線。

三、防止SQL注入

雖然上述範例中已經完成了基本的查詢操作,但是由於SQL注入的存在,我們在實際開發中必須更加謹慎。而PHP提供了一些函數來預防SQL注入攻擊。

  1. mysqli_real_escape_string()函數

本函數用於轉義SQL查詢中的特殊字符,例如單引號、雙引號等。在執行查詢操作之前,我們可以使用函數對輸入資料進行轉義,以避免惡意使用者傳入SQL注入程式碼。範例程式碼如下:

<?php
$name = mysqli_real_escape_string($conn, $_POST['name']);
$sql = "SELECT * FROM users WHERE name='$name'";
$result = mysqli_query($conn, $sql);

if ($result) {
    // 输出数据
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Age: " . $row["age"]. "<br>";
    }
} else {
    echo "0 results";
}

// 关闭连接
mysqli_close($conn);
?>

在上述程式碼中,我們使用了mysqli_real_escape_string()函數對使用者輸入的$name進行了轉義。在建構查詢語句時,將轉義後的$name插入到SQL語句中,避免了SQL注入攻擊。

  1. 預處理語句

在PHP中,我們也可以使用預處理語句來避免SQL注入攻擊。預處理語句是在執行SQL語句之前,先向資料庫發送一條預處理指令,告訴資料庫要執行的SQL語句的結構和資料類型。然後,再將查詢參數與該預處理語句一起傳送至資料庫,以避免SQL注入攻擊。範例程式碼如下:

<?php
$stmt = $conn->prepare("SELECT * FROM users WHERE name=?");
$stmt->bind_param("s", $name);

$name = mysqli_real_escape_string($conn, $_POST['name']);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Age: " . $row["age"]. "<br>";
    }
} else {
    echo "0 results";
}

// 关闭连接
$stmt->close();
$conn->close();
?>

在上述程式碼中,我們首先使用$conn->prepare()函數建立了預處理語句,並使用$stmt->bind_param()函數綁定了參數。在執行查詢操作之前,我們將使用者輸入的$name進行轉義,並將其賦值給綁定參數中的$s變數。最後,我們使用$stmt->execute()函數執行預處理語句,使用$stmt->get_result()函數來取得查詢結果,從而完成了查詢操作。

四、結語

在PHP中查詢資料庫是很常見的操作,但由於SQL注入攻擊的存在,我們必須更加謹慎。在實際開發中,我們通常會結合以上介紹的防注入措施來執行查詢操作。希望本文能對PHP開發中的查詢操作有所幫助。

以上是php 怎麼查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php 看不到html下一篇:php 看不到html