我正在尝试使用MySQLi并使用以下代码来检查我应该如何处理fetch_array(MYSQLI_ASSOC);
这是我的代码:
include "Database.php";
$ArrayQuery = $mysqli->query("SELECT * FROM accountinformation");
while ($ArrayResults = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
echo count($ArrayResults);
echo "<br>";
}
echo "<br><br><bR><br>";
$Empty = array();
while ($ArrayResult = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
foreach ($ArrayResult AS $ArrayRes)
{
$Empty[] = $ArrayRes;
}
}
print_r($Empty);
问题是,我在while循环中使用相同的Variable
,第一个返回3
然后3
这是预期的。
但问题是,我的第二个问题;它返回一个空白数组
当array( )
时, print_r();
当我这样做时:
while ($ArrayResult = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
print_r($ArrayResult);
}
对于我的第二个while循环,它不返回任何输出。
我检查了我的变量$ArrayResults
,而$ArrayResult
不是重复的,它们实际上是唯一的。
为什么我的第二个while循环在我的第一个循环工作时没有返回任何内容?
更新
当我使用不同的起始变量对混合物进行第二次查询时:
$ArrayQuer = $mysqli->query("SELECT * FROM accountinformation");
并修改我的第二个while循环:
while ($ArrayResult = $ArrayQuer->fetch_array(MYSQLI_ASSOC))
{
print_r($ArrayResult);
}
我得到了预期的输出?那么MySQLi不允许在整个脚本中使用两次相同的参数吗?
答案 0 :(得分:1)
mysqli_data_seek
将结果指针调整为中的任意行 结果
while ($ArrayResults = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
echo count($ArrayResults);
echo "<br>";
}
echo "<br><br><bR><br>";
mysqli_data_seek($ArrayQuery,0); // Addition Made Here
$Empty = array();
while ($ArrayResult = $ArrayQuery->fetch_array(MYSQLI_ASSOC))
{
foreach ($ArrayResult AS $ArrayRes)
{
$Empty[] = $ArrayRes;
}
}
print_r($Empty);
重新使用已经获取的数组;你应该使用mysqli_data_seek();
(注意我已将它添加到你的`$ Empty Variable 上面)这应该是问题所在。
请参阅此处的手册:
http://us.php.net/manual/en/mysqli-result.data-seek.php
想想这个场景;你为什么要重新购买你已经拥有的东西?
完美适合你的情况