搜尋

首頁  >  問答  >  主體

使用 mysqli 的資料庫的單一結果

<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粉226642568P粉226642568473 天前626

全部回覆(2)我來回復

  • P粉321676640

    P粉3216766402023-08-30 11:43:49

    使用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'];

    回覆
    0
  • P粉675258598

    P粉6752585982023-08-30 09:34:29

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

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

      $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;

    回覆
    0
  • 取消回覆