2011-07-14 14 views
40

感謝我的答案,我已經發現我無法使用fetch_all(),因爲我使用PHP 5.2.17 - fetch_assocwhile循環工作。mysqli fetch_all()不是一個有效的函數嗎?


我使用fetch_all功能是回來了與此錯誤:

Fatal error: Call to undefined method mysqli_result::fetch_all() in

$mysqli = new mysqli($host, $username, $password, $database); 
$query = "LONG QUERY that works, tested in phpmyadmin" 
$result = $mysqli->query($query); 
$result->fetch_all(); or $mysqli->fetch_all() tried both 
mysqli_fetch_all() was already tried. 
$mysqli->close(); 

我能夠連接到數據庫和我有拉單行。當我將查詢放在PHPMYADMIN中時,返回5行。

此功能是否正常工作?有沒有一種方法可以將我的數據放到我自己的assoc數組中?

回答

43

該函數自PHP 5.3.0起可用。可能您的版本較舊。改爲使用fetch_assoc()

while ($row = $result->fetch_assoc()) { 
    // do what you need. 
} 
+0

你們都有正確的答案,只是投了第一個人:D謝謝你們! – Phil

8

作爲除了Fabrizios回答,請考慮建立你的陣列有一個循環:

$array = array(); 
while($row = $result->fetch_assoc()) 
    $array[] = $row; 
18

的典型方法來構造一個關聯數組是一個while循環:

$results_array = array(); 
$result = $mysqli->query($query); 
while ($row = $result->fetch_assoc()) { 
    $results_array[] = $row; 
} 
27

mysqli::fetch_all()需要mysqlnd驅動程序才能使用它。

+2

是的,如果你有一個運行(在Debian上)的roundcube,它將停止工作,因爲mysqlnd會刪除php-mdb2-driver-mysql和roundcube-mysql驅動程序。所以請謹慎安裝mysqlnd – trojan

0

PHP致命錯誤:調用未定義功能mysqli_fetch_all()

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);//not work 

變化:PHP 5.3或

$query = "SELECT * FROM `user_counter` ORDER BY id DESC LIMIT 20"; 
$result = mysqli_query($connection, $query) or die 
("Error in Selecting " . mysqli_error($connection)); 
$rows = array(); 
while ($row = $result->fetch_assoc()) { 
    $rows[] = $row; 
} 
echo json_encode($rows); 
0

我想補充有關mysqlnd司機附加的註釋:它也有安裝了mysqli API擴展。沒有擴展名,fetch_all()仍然不可用。我在解決爲什麼我的代碼在一臺服務器上工作而不是另一臺服務器時發現了這個問題,PHP> 5.3。使用phpinfo()驗證已安裝的擴展。

0
function runQuery($query) { 
     $result = mysqli_query($this->conn,$query); 
       $resultset = array(); //you need to define array 
         while($row=$result->fetch_assoc()) { 
           $resultset[] = $row; //then insert result into the array 
      }  
      if(!empty($resultset)) 
      { 

      return $resultset;} 
      else{return 'empty';}; 
    } 
+0

爲什麼要downvote?當原始mysqli_fetch_all()失敗時,此註釋可解決問題。 PHP開發人員必須向這個人學習如何編寫函數。 – user619271

0

我有5.6,但無論如何都不適合我。通過啓用mysqlnd驅動程序它爲我工作。只需寫apt-get install php5-mysqlnd然後重新啓動PHP,你很好走!

相關問題