欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php 使用mysqli

php使用mysqli

mysqli全稱(chēng)為MySQL Improved Extension,是php語(yǔ)言中專(zhuān)門(mén)用于訪(fǎng)問(wèn)MySQL數(shù)據(jù)庫(kù)的擴(kuò)展模塊,它具有許多優(yōu)點(diǎn),包括速度比較快、安全性較高,而且支持了多種語(yǔ)句查詢(xún),開(kāi)發(fā)者可以通過(guò)mysqli連接到數(shù)據(jù)庫(kù)并執(zhí)行查詢(xún),具有很高的靈活性和可編程性。下面就來(lái)詳細(xì)介紹下mysqli的使用方法。

1. 連接數(shù)據(jù)庫(kù)

mysqli連接數(shù)據(jù)庫(kù)需要用到用戶(hù)名、密碼、數(shù)據(jù)庫(kù)名和主機(jī)名,有兩種方法,一種是面對(duì)對(duì)象的方式,另一種是面對(duì)過(guò)程的方式,以面對(duì)對(duì)象的方式為例:

$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("連接數(shù)據(jù)庫(kù)失敗: " . $mysqli->connect_error);
}
echo "連接數(shù)據(jù)庫(kù)成功!";

如果連接出現(xiàn)問(wèn)題,直接輸出錯(cuò)誤信息,后面的代碼也不會(huì)執(zhí)行。

2. 執(zhí)行查詢(xún)

mysqli執(zhí)行查詢(xún)時(shí)可以通過(guò)兩種方式,一種是面對(duì)對(duì)象的方式,另一種是面對(duì)過(guò)程的方式。下面分別介紹這兩種方式:

2.1 面對(duì)對(duì)象的方式

在mysqli面對(duì)對(duì)象的方式中,可以使用query()函數(shù)來(lái)進(jìn)行查詢(xún),其語(yǔ)法如下:

$result = $mysqli->query("SELECT * FROM table_name");
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " Age: " . $row["age"]. "<br>";
}
} else {
echo "0 結(jié)果";
}

這里的query()函數(shù)將返回一個(gè)mysqli_result對(duì)象,可以使用num_rows屬性來(lái)判斷是否有數(shù)據(jù)查詢(xún)到,如果有數(shù)據(jù),則使用fetch_assoc()方法來(lái)獲取查詢(xún)結(jié)果。

2.2 面對(duì)過(guò)程的方式

在mysqli面對(duì)過(guò)程的方式中,可以使用mysqli_query()函數(shù)來(lái)進(jìn)行查詢(xún),其語(yǔ)法如下:

$result = mysqli_query($mysqli, "SELECT * FROM table_name");
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 結(jié)果";
}

這里的mysqli_query()函數(shù)直接返回查詢(xún)結(jié)果,可以使用mysqli_num_rows()函數(shù)來(lái)判斷是否有數(shù)據(jù)查詢(xún)到,如果有則使用mysqli_fetch_assoc()函數(shù)來(lái)獲取查詢(xún)結(jié)果。

3. 預(yù)處理語(yǔ)句

mysqli中提供了預(yù)處理語(yǔ)句來(lái)進(jìn)行更加安全的查詢(xún),這種方法可以防止SQL注入攻擊,可以使用PreparedStatement的方式來(lái)預(yù)處理查詢(xún)語(yǔ)句。具體過(guò)程如下:

//創(chuàng)建prepared statement
$stmt = $mysqli->prepare("SELECT * FROM table_name WHERE name=? AND age=?");
//綁定參數(shù)
$stmt->bind_param("si", $name, $age);
//設(shè)置參數(shù)并執(zhí)行
$name = "Tom";
$age = 20;
$stmt->execute();
//獲取結(jié)果
$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 結(jié)果";
}

這里的bindParam()方法用來(lái)綁定參數(shù),第一個(gè)參數(shù)是預(yù)處理語(yǔ)句中參數(shù)的類(lèi)型,"si"代表兩個(gè)參數(shù)的類(lèi)型,s表示字符串類(lèi)型,i表示整數(shù)類(lèi)型,第二個(gè)參數(shù)是你要查詢(xún)的數(shù)據(jù);第二個(gè)參數(shù)是通過(guò)變量的方式傳遞進(jìn)去的,這樣可以避免SQL注入攻擊。

4. 關(guān)閉連接

mysqli使用完畢后需要釋放資源,也就是關(guān)閉連接,這里提供兩種方法,一種是面對(duì)對(duì)象的方式,另一種是面對(duì)過(guò)程的方式:

4.1 面對(duì)對(duì)象的方式

$mysqli->close();

4.2 面對(duì)過(guò)程的方式

mysqli_close($mysqli);

這里分別對(duì)mysqli進(jìn)行了關(guān)閉操作。

總結(jié)

以上就是mysqli的基本使用方法,從連接數(shù)據(jù)庫(kù)到查詢(xún)數(shù)據(jù)等操作都已經(jīng)講解清楚,如果您還有其他的問(wèn)題,可以參考官方文檔或者其他相關(guān)教程。