搜尋

首頁  >  問答  >  主體

取得單一結果的資料庫操作:使用mysqli連接資料庫

<p>我第一次嘗試使用mySQLi。在循環的情況下,我已經做到了。循環的結果顯示出來了,但是當我嘗試顯示單一記錄時卡住了。這是工作的循環程式碼。 </p> <pre class="brush:php;toolbar:false;"><?php // 連接到資料庫 $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 /*循環遍歷每一行並顯示記錄*/ for($i=0; $i<$num_results; $i ) { $row = mysqli_fetch_assoc($result); ?> 姓名:<?php print $row['ssfullname']; ?> <br /> 電子郵件:<?php print $row['ssemail']; ?> <br /><br /> <?php // 結束循環 } ?></pre> <p>如何顯示單一記錄,任何記錄,姓名或電子郵件,從第一行或其他任何地方,只是單一記錄,我該如何做到這一點? 在單一記錄的情況下,考慮刪除上述循環部分,讓我們顯示任何單一記錄而不使用循環。 </p>
P粉111227898P粉111227898509 天前592

全部回覆(2)我來回復

  • P粉554842091

    P粉5548420912023-08-22 19:56:41

    使用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粉010967136

    P粉0109671362023-08-22 19:34:43

    當只需要一個結果時,就不需要使用迴圈。直接獲取行。

    • 如果需要將整行資料取得為關聯數組:

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

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

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

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

    在查詢中使用的變數

    當查詢中需要使用變數時,必須使用預處理語句。例如,假設我們有一個變數$id

    PHP >= 8.2

    // 获取单行
    $sql = "SELECT fullname, email FROM users WHERE id=?";
    $row = $conn->execute_query($query, [$id])->fetch_assoc();
    
    // 如果只需要一个值
    $sql = "SELECT count(*) FROM users WHERE id=?";
    $count = $conn->execute_query($query, [$id])->fetch_column();

    舊版的PHP:

    // 获取单行
    $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();
    
    // 如果只需要一个值
    $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);
    // 如果需要一个数组
    $row = $result->fetch_assoc();
    // 或者如果只需要一个值
    $value = $result->fetch_row()[0] ?? false;

    回覆
    0
  • 取消回覆