gpt4 book ai didi

php - mysqli fetch_array 不迭代

转载 作者:行者123 更新时间:2023-11-30 22:27:56 25 4
gpt4 key购买 nike

请注意以下代码:CLASS

namespace hfdDB;
class HFD_DB
{
/**
* @return \mysqli
*/
public static function getConnection()
{
require_once('globals.php');

return new \mysqli(DBHOST, DBUSER, DBPASSWORD, DBNAME);

}

/**
*
*/
public static function getAllItems()

{
$conn = self::getConnection(); //open connection
$sql="SELECT * FROM HFD_ITEMS"; //command text
$cmdAllItems = $conn->prepare($sql); // command
$cmdAllItems->execute(); //execute command
$allItems = $cmdAllItems->get_result(); //assign result
echo $allItems->num_rows." rows returned<br>";
$itemsArray = []; //array for storing result rows

echo "result set (first row): ";
var_dump($allItems);
echo "<br>";

if (!empty($allItems) ) {
while ($item = $allItems->fetch_array(MYSQLI_ASSOC)) ;
{
echo "fetch result: ";
var_dump($item);
echo "<br>";
array_push($itemsArray, $item); //add to array
}

return json_encode($itemsArray); //return json
} else {
return "NO DATA"; //return error
}
}

==================================login.php ====

<?php
/**
* Created by PhpStorm.
* User: Mark
* Date: 1/10/2016
* Time: 7:08 PM
*/



require_once("HFD_DB.php");
$allItems_json = \hfdDB\HFD_DB::getAllItems();
if (!empty($allItems_json)) {
echo "Data: ";
echo $allItems_json;
} else {
echo "NO DATA";

}

和我的结果:(从 phpStorm IDE 运行时)

6730 rows returned
result set (first row):
object(mysqli_result)#3 (5)
{
["current_field"]=> int(0)
["field_count"]=> int(10)
["lengths"]=> NULL
["num_rows"]=> int(6730)
["type"]=> int(0)
}


fetch result: NULL

Data: [null]

注意:6370 是此查询的预期行数。那么为什么我不在循环中迭代 6370 次呢?

虽然我是 PHP 的新手,但我对编码或 SQL 并不陌生。

我在这里错过了什么?

谢谢。

最佳答案

您获取了一个数组数组。您应该使用 for - each 循环。

while ($item = $allItems->fetch_array(MYSQLI_ASSOC)) ;
{
echo "fetch result: ";
var_dump($item);
echo "<br>";
array_push($itemsArray, $item); //add to array
}

运行一次,分配整个数组结构。 ->fetch_array 一次性获取所有内容,不像 fetch_assoc。

ForEach (($allItems->fetch_array(MYSQLI_ASSOC)) as $Item)
{
echo "fetch result: ";
var_dump($item);
echo "<br>";
array_push($itemsArray, $item); //add to array
}

使用 foreach 遍历数组数组并将命名 (Assoc) 数组放入 $item 变量中,这正是您所期望的。

关于php - mysqli fetch_array 不迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com