使用 mysqli 的資料庫的單一結果
P粉226642568
P粉226642568 2023-08-29 13:20:44
0
2
605
<p>我是第一次嘗試使用 mySQLi。我已經在循環的情況下做到了。循環結果正在顯示,但當我嘗試顯示單一記錄時,我陷入困境。這是正在運行的循環程式碼。 </p> <pre class="brush:php;toolbar:false;"><?php // Connect To DB $hostname="localhost"; $database="mydbname"; $username="root"; $password=""; $conn = mysqli_connect($hostname, $username, $password, $database); ?> <?php $query = "SELECT ssfullname, ssemail FROM userss ORDER BY ssid"; $result = mysqli_query($conn, $query); $num_results = mysqli_num_rows($result); ?> <?php /*Loop through each row and display records */ for($i=0; $i<$num_results; $i ) { $row = mysqli_fetch_assoc($result); ?> Name: <?php print $row['ssfullname']; ?> <br /> Email: <?php print $row['ssemail']; ?> <br /><br /> <?php // end loop } ?></pre> <p>如何顯示單一記錄,任何記錄,姓名或電子郵件,從第一行或其他什麼,只是單一記錄,我該怎麼做? 在單一記錄的情況下,考慮刪除所有上述循環部分,讓我們顯示任何沒有循環的單一記錄。 </p>
P粉226642568
P粉226642568

全部回覆(2)
P粉321676640

使用mysqli_fetch_row()。試試這個,

$query = "SELECT ssfullname, ssemail FROM userss WHERE user_id = ".$user_id;
$result = mysqli_query($conn, $query);
$row   = mysqli_fetch_row($result);

$ssfullname = $row['ssfullname'];
$ssemail    = $row['ssemail'];
P粉675258598

當只需要單一結果時,不應使用循環。只需立即獲取該行即可。

  • 如果您需要將整行提取到關聯數組中:

    $row = $result->fetch_assoc();
  • 如果您只需要一個值,從 PHP 8.2 開始:

    $value = $result->fetch_column();
  • 或對於舊版本:

    $value = $result->fetch_row()[0] ?? false;

以下是不同用例的完整範例

查詢中使用的變數

當要在查詢中使用變數時,必須使用準備好的語句。例如,假設我們有一個變數 $id

PHP >= 8.2

// get a single row
$sql = "SELECT fullname, email FROM users WHERE id=?";
$row = $conn->execute_query($query, [$id])->fetch_assoc();

// in case you need just a single value
$sql = "SELECT count(*) FROM users WHERE id=?";
$count = $conn->execute_query($query, [$id])->fetch_column();

舊版 PHP 版本:

// get a single row
$query = "SELECT fullname, email FROM users WHERE id=?";
$stmt = $conn->prepare($query);
$stmt->bind_param("s", $id);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

// in case you need just a single value
$query = "SELECT count(*) FROM userss WHERE id=?";
$stmt = $conn->prepare($query);
$stmt->bind_param("s", $id);
$stmt->execute();
$result = $stmt->get_result();
$count = $result->fetch_row()[0] ?? false;

上述過程的詳細解釋可以在我的文章中找到。至於為什麼必須遵循它,請參見這個著名的問題

查詢中沒有變數

在您的情況下,如果查詢中沒有使用變量,您可以使用 query() 方法:

$query = "SELECT fullname, email FROM users ORDER BY ssid";
$result = $conn->query($query);
// in case you need an array
$row = $result->fetch_assoc();
// OR in case you need just a single value
$value = $result->fetch_row()[0] ?? false;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板