Bagaimana untuk menggunakan mysql_query untuk pertanyaan pangkalan data dalam pembangunan bahasa PHP?

王林
Lepaskan: 2023-06-11 08:46:01
asal
2067 orang telah melayarinya

Dalam pembangunan bahasa PHP, penggunaan pangkalan data MySQL adalah sangat biasa, dan fungsi mysql_query ialah kaedah untuk PHP menyambung ke pangkalan data MySQL, dan ia juga merupakan salah satu kaedah asas untuk pertanyaan data. Dalam artikel ini, kami akan meneroka cara menggunakan fungsi mysql_query untuk pertanyaan pangkalan data.

1. Fahami fungsi mysql_query

mysql_query ialah fungsi dalam PHP yang digunakan untuk menghantar pertanyaan ke pelayan MySQL Ia biasanya digunakan untuk melakukan operasi pengubahsuaian seperti INSERT, UPDATE, DELETE, dan PILIH pernyataan pertanyaan.

Struktur sintaks asas adalah seperti berikut:

mysql_query(string $query , resource $connection = ?): mixed
Salin selepas log masuk

Antaranya, "$query" ialah pernyataan pertanyaan yang akan dilaksanakan, yang mestilah pernyataan SQL yang sah; pengecam untuk menyambung ke pangkalan data MySQL , nilai lalai ialah sambungan yang paling baru dibuka.

Jika pelaksanaan berjaya, pengecam sumber MySQL akan dikembalikan. Jika tidak, palsu akan dikembalikan, yang bermaksud pertanyaan gagal dilaksanakan.

2. Gunakan mysql_query untuk membuat pertanyaan

Sebelum menggunakan mysql_query untuk membuat pertanyaan, anda perlu menyambung ke pangkalan data terlebih dahulu. Anda boleh menyambung ke pangkalan data menggunakan mysqli_connect atau PDO.

Kod sampel untuk menyambung ke pangkalan data MySQL adalah seperti berikut:

// 服务器地址
$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);
Salin selepas log masuk

Seterusnya, kita boleh menggunakan fungsi mysql_query untuk membuat pertanyaan. Contohnya, tanya semua maklumat pelajar dalam jadual pelajar:

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

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

Dalam kod di atas, "$sql" ialah pernyataan pertanyaan yang akan dilaksanakan Dalam contoh ini, ia menanyakan semua rekod dalam jadual "pelajar". ; "$ hasil" ialah set hasil yang dikembalikan dengan melaksanakan pertanyaan. Pada masa yang sama, set hasil ini boleh dilalui melalui fungsi mysql_fetch_assoc. Fungsi mysql_fetch_assoc mengembalikan baris hasil semasa sebagai tatasusunan bersekutu dan menghalakan penuding ke baris seterusnya. Oleh itu, semua set hasil boleh dilalui melalui gelung while.

3. Elakkan suntikan SQL

Apabila menggunakan fungsi mysql_query untuk pertanyaan data, anda perlu memberi perhatian untuk mengelakkan masalah suntikan SQL. Suntikan SQL merujuk kepada kaedah serangan di mana penggodam menggunakan pernyataan SQL dalam program untuk melaksanakan beberapa pernyataan SQL yang tidak sah atau mendapatkan data sensitif dengan memasukkan arahan dan aksara khas tertentu. Untuk memastikan keselamatan aplikasi, parameter input perlu dipraproses semasa melakukan pertanyaan SQL.

Berikut ialah beberapa cara utama untuk mengelakkan suntikan SQL:

1 Gunakan fungsi addslashes PHP

Fungsi fungsi addslashes adalah untuk membuang petikan tunggal ('). dalam rentetan , petikan berganda ("), garis miring ke belakang () dan aksara khas lain terlepas untuk mengelakkan serangan suntikan SQL.

Contoh penggunaan:

// 防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);
Salin selepas log masuk

2. Gunakan fungsi sambungan mysqli PHP

Mysqli ialah modul dalam pustaka sambungan PHP Modul ini menyediakan fungsi antara muka API yang disediakan oleh MySQL dan menyokong prapemprosesan untuk melaksanakan pernyataan pertanyaan SQL

Kod sampel untuk menggunakan mysqli untuk membuat pertanyaan adalah seperti berikut :

// 预处理查询
$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);
Salin selepas log masuk

3. Gunakan fungsi sambungan PHP PDO

PDO ialah sambungan dalam PHP untuk pangkalan data operasi ini menyokong pelbagai pangkalan data yang berbeza dan menyediakan satu set lengkap kaedah prapemprosesan mengelakkan serangan suntikan SQL dengan berkesan.

Kod sampel untuk membuat pertanyaan menggunakan PDO adalah seperti berikut:

// 连接数据库
$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;
Salin selepas log masuk

4. Ringkasan

Artikel ini memperkenalkan kaedah menggunakan fungsi mysql_query untuk pertanyaan pangkalan data, dan juga mencadangkan beberapa kaedah untuk mengelakkan serangan suntikan SQL Bagi pemula, mereka boleh belajar dan berlatih melalui kaedah di atas Bagi pembangun yang telah menguasai pengetahuan ini, mereka boleh mempelajari penggunaan PHP dan MySQL lanjutan yang lain. Petua. Dalam apa jua keadaan, memastikan keselamatan program dan ketepatan data adalah salah satu isu penting yang sentiasa perlu dipertimbangkan oleh pembangun

Atas ialah kandungan terperinci Bagaimana untuk menggunakan mysql_query untuk pertanyaan pangkalan data dalam pembangunan bahasa PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan