在PHP開(kāi)發(fā)中,我們經(jīng)常需要從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),而mysqli是PHP中比較常用的進(jìn)行數(shù)據(jù)庫(kù)操作的擴(kuò)展。接下來(lái),本文將介紹如何使用mysqli取值,并通過(guò)舉例來(lái)進(jìn)一步說(shuō)明。
首先,我們需要先連接數(shù)據(jù)庫(kù),并選擇表格。代碼如下:
$conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM mytable"; $result = $conn->query($sql);上述代碼中,$servername、$username、$password、$dbname 分別表示數(shù)據(jù)庫(kù)的地址、用戶名、密碼和數(shù)據(jù)庫(kù)名。該代碼通過(guò)new mysqli()函數(shù)實(shí)例化了mysqli對(duì)象,然后使用$conn->connect_error檢測(cè)連接是否成功。接著,使用$sql語(yǔ)句查詢數(shù)據(jù)表中的所有數(shù)據(jù),并將結(jié)果存儲(chǔ)在$result變量中。 接下來(lái),我們需要通過(guò)mysqli_fetch_array()或mysqli_fetch_assoc()方法將結(jié)果進(jìn)行逐條取出。兩者的區(qū)別在于返回的結(jié)果不同。mysqli_fetch_array()返回的結(jié)果既包含數(shù)組索引(數(shù)字)也包括關(guān)聯(lián)索引(字符串),而mysqli_fetch_assic()的結(jié)果只包括關(guān)聯(lián)索引(字符串)。 例如,我們可以通過(guò)以下代碼逐條獲取所有數(shù)據(jù)的關(guān)聯(lián)索引:
while($row = $result->fetch_assoc()) { echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Age: " . $row["age"] . "上述代碼中,我們使用while循環(huán)逐條讀取$result中的數(shù)據(jù),并通過(guò)$row["id"]、$row["name"]、$row["age"]等語(yǔ)句獲取相應(yīng)數(shù)據(jù)的關(guān)聯(lián)索引,并展示出來(lái)。 如果需要獲取返回結(jié)果的下標(biāo)(數(shù)字),可以使用mysqli_fetch_array()方法,代碼如下:
"; }
while($row = mysqli_fetch_array($result)) { echo "id: " . $row[0] . " - Name: " . $row[1] . " - Age: " . $row[2] . "上述代碼中,我們使用while循環(huán)逐條讀取$result中的數(shù)據(jù),并通過(guò)$row[0]、$row[1]、$row[2]等語(yǔ)句獲取相應(yīng)數(shù)據(jù)的下標(biāo),并展示出來(lái)。 在獲取數(shù)據(jù)時(shí),我們有時(shí)需要對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,避免SQL注入等安全問(wèn)題。mysqli提供了mysqli_real_escape_string()方法,可以對(duì)特殊字符進(jìn)行轉(zhuǎn)義。例如,
"; }
$name = mysqli_real_escape_string($conn, $_POST['name']);上述代碼中,我們通過(guò)mysqli_real_escape_string()方法對(duì)用戶輸入的$name進(jìn)行轉(zhuǎn)義,防止其中包含SQL注入。 需要注意的是,mysqli對(duì)象在使用完畢后應(yīng)當(dāng)使用$conn->close()方法關(guān)閉,避免占據(jù)數(shù)據(jù)庫(kù)連接資源。同時(shí),為了提高代碼的可讀性和可維護(hù)性,我們應(yīng)當(dāng)使用對(duì)象的方式進(jìn)行mysqli操作,而不是使用函數(shù)。 到這里,我們已經(jīng)了解到了如何通過(guò)mysqli實(shí)現(xiàn)數(shù)據(jù)的獲取和過(guò)濾,并通過(guò)舉例進(jìn)行了說(shuō)明,相信大家對(duì)mysqli的使用已經(jīng)有了更深入的了解。