PHP和SQL是web開發(fā)領(lǐng)域中最常用的技術(shù)之一。在網(wǎng)站的設(shè)計中,常常需要從數(shù)據(jù)庫中查詢數(shù)據(jù)并以不同的方式展示。在PHP中,我們可以使用各種方式來獲取SQL查詢結(jié)果。
最常用的方法是使用mysqli_query()函數(shù),這個函數(shù)需要連接數(shù)據(jù)庫、執(zhí)行SQL語句,然后返回查詢結(jié)果。下面是一個例子:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 創(chuàng)建連接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 檢查連接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// 輸出數(shù)據(jù)
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 結(jié)果";
}
mysqli_close($conn);
?>
上面的代碼展示了如何連接數(shù)據(jù)庫,執(zhí)行SQL語句并展示查詢結(jié)果。我們使用mysqli_fetch_assoc()函數(shù)來逐行讀取查詢結(jié)果。
除了mysqli_query()函數(shù)之外,我們還可以使用pdo::query()函數(shù)來執(zhí)行查詢,它也是一個常見的方法。下面是一個pdo::query()函數(shù)的例子:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 設(shè)置 PDO 錯誤模式為異常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT id, firstname, lastname FROM MyGuests";
// 使用 exec() ,因為沒有結(jié)果返回
$conn->exec($sql);
echo "查詢成功";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
上面的代碼展示了使用pdo::exec()函數(shù)執(zhí)行SQL查詢。
最后,在獲取查詢結(jié)果時,我們也可以使用兩個非常常用的函數(shù):mysql_fetch_array()和mysql_fetch_assoc()。這些函數(shù)是舊版本的PHP中的常用方法,現(xiàn)被mysqli_fetch_array()和mysqli_fetch_assoc()所取代。下面是mysql_fetch_array()的一個例子:
<?php
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result)) {
printf("ID: %s 名稱: %s", $row[0], $row[1]);
}
mysql_free_result($result);
?>
不論我們采用哪種方式來獲取查詢結(jié)果,我們永遠需要注意數(shù)據(jù)的安全性,以防止SQL注入攻擊。此外,我們也應(yīng)該在文檔中對查詢結(jié)果進行適當(dāng)?shù)淖⑨專奖愫罄m(xù)維護和閱讀。