簡體   English   中英

PHP 不顯示 MYSQL 查詢的結果

[英]PHP not displaying result from MYSQL query

我有以下代碼

$sql = "SET @uid := (SELECT ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);";
$sql = "UPDATE channels SET Used = 1 WHERE ID = @uid;";
$sql = "SELECT * FROM channels WHERE ID IN = @uid;";
$result = mysqli_multi_query($conn, $sql)
                 or die( mysqli_error($sql) );
if (mysqli_num_rows($result) > 0) {
  $text = '';
  while($row = mysqli_fetch_assoc($result)) {  
      $Channel_Location = $row['Channel_Location'];
      $text =  $text . $Channel_Location;

    }       
}

現在我遇到的問題是 php 沒有顯示 MYSQL 查詢返回的結果,該查詢稍后存儲在會話中的代碼中顯示在虛擬頁面上,它出現以下錯誤

警告:mysqli_num_rows() 期望參數 1 為 mysqli_result

我的 SQL 查詢完全符合我的需要,所以我真的不想改變它。 我只需要一些關於如何讓 PHP 回應 @uid 的建議,有沒有人願意幫我解決這個問題? 如果是這樣謝謝。

您的 $sql 中有 3 個查詢,因此您應該使用 multi_query 函數http://php.net/manual/en/mysqli.multi-query.php

您可以將第一個查詢更改為:

SET @uid = 0;
SELECT @uid := ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);

更新您可以嘗試使用所有注釋改進修改您的代碼片段。

$sql = 'SET @uid = 0;';
$sql .= 'SELECT @uid:= ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);';
$sql .= 'UPDATE channels SET Used = 1 WHERE ID = @uid;';
$sql .= 'SELECT * FROM channels WHERE ID IN = @uid;';
if (mysqli_multi_query($conn, $sql)) {
   do {
       $result = mysqli_store_result($conn);
   } while(mysqli_next_result($conn));
   if (mysqli_num_rows($result) > 0) {
     $text = '';
     while($row = mysqli_fetch_assoc($result)) {  
       $Channel_Location = $row['Channel_Location'];
       $text =  $text . $Channel_Location;
     }       
   }
} else {
  die( mysqli_error($conn) );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM