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
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);
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>'; }
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);
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);
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;
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!