Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pertanyaan dalam php

Bagaimana untuk melaksanakan pertanyaan dalam php

WBOY
WBOYasal
2023-05-06 15:07:07658semak imbas

Dalam PHP, pertanyaan ialah operasi yang sangat kerap digunakan untuk mendapatkan atau menyemak data yang diperlukan daripada pangkalan data. Ini adalah asas yang penting kerana ia memberikan kita akses kepada kandungan dalam pangkalan data.

Dalam artikel ini, kami akan meneroka cara melaksanakan pertanyaan dalam PHP untuk menjadikan aplikasi web kami lebih berkuasa.

1. Sambung ke pangkalan data

Sebelum memulakan pertanyaan, kami perlu mewujudkan sambungan pangkalan data. Anda boleh menggunakan PDO (Objek Data PHP) atau sambungan mysqli.

Menggunakan 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();
}

Menggunakan 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. Melaksanakan pertanyaan

Setelah kami mewujudkan sambungan pangkalan data, kami boleh melaksanakan pertanyaan . Berikut ialah contoh cara melakukan pertanyaan SELECT menggunakan PDO dan mysqli:

Menggunakan 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);

Menggunakan 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. Ikat parameter

Apabila melaksanakan pertanyaan, kami biasanya mahu pertanyaan itu hanya mengembalikan hasil yang sepadan dengan kriteria tertentu. Dalam kes ini, kita perlu menggunakan parameter bind untuk memisahkan keadaan pertanyaan daripada pernyataan pertanyaan.

Berikut ialah contoh parameter pengikatan menggunakan PDO dan mysqli:

Menggunakan 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);

Menggunakan 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. Pertanyaan tersusun

Pertanyaan prapengumpulan ialah cara mengoptimumkan pertanyaan pangkalan data, yang membolehkan kami menggunakan ruang letak dalam pertanyaan untuk mengelakkan serangan suntikan SQL.

Berikut ialah contoh menggunakan pertanyaan PDO dan mysqli yang telah disusun sebelumnya:

Menggunakan 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);

Menggunakan 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. Pemprosesan set hasil

Setelah kami melaksanakan pertanyaan, kami perlu memproses set hasil, yang bermaksud memformatkannya ke dalam format yang sesuai untuk digunakan dalam aplikasi web, seperti tatasusunan atau rentetan JSON.

Berikut ialah contoh pengendalian set hasil:

Menggunakan 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);

Menggunakan 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();

Ringkasan

Dalam PHP Melaksanakan pertanyaan adalah asas penting dan kerap digunakan dalam aplikasi web. Kami boleh menggunakan sambungan PDO atau mysqli untuk mewujudkan sambungan pangkalan data dan menggunakan pertanyaan SELECT untuk mendapatkan semula data yang kami perlukan. Apabila keadaan pertanyaan memerlukan parameter terikat, kita perlu menggunakan parameter terikat dan pertanyaan yang diprasusun untuk memastikan keselamatan pertanyaan. Akhir sekali, kita perlu memproses set keputusan dan memformatkannya ke dalam format data aplikasi web yang sesuai.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn