作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请注意以下代码: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/
我是一名优秀的程序员,十分优秀!