我已将数据导入表中,现在我正在使用 PHP 使用以下代码访问该数据,
<?php
require_once 'connect.php';
$query = "SELECT * FROM JunkData";
$result = $conn->query($query);
if(!$result) die("Fatal Error");
$rows = $result->num_rows;
for ($name = 0; $name < $rows; ++$name)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
echo htmlspecialchars($row['Name']) . '<br/>';
}
$result->close();
$conn->close();
这行得通!
我真的很好奇为什么添加第二个 for 循环不起作用,除非我再次声明 $result?
<?php
require_once 'connect.php';
$query = "SELECT * FROM JunkData";
$result = $conn->query($query);
if(!$result) die("Fatal Error");
$rows = $result->num_rows;
for ($name = 0; $name < $rows; ++$name)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
echo htmlspecialchars($row['Name']) . '<br/>';
}
for ($number = 0; $number < $rows; ++$number)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
echo htmlspecialchars($row['Number']) . 'Flag<br/>';
}
$result->close();
$conn->close();
不起作用,尽管“标志”被打印了适当的次数。
而如果我再次声明 $result 。
<?php
require_once 'connect.php';
$query = "SELECT * FROM JunkData";
$result = $conn->query($query);
if(!$result) die("Fatal Error");
$rows = $result->num_rows;
for ($name = 0; $name < $rows; ++$name)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
echo htmlspecialchars($row['Name']) . '<br/>';
}
$result = $conn->query($query);
for ($number = 0; $number < $rows; ++$number)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
echo htmlspecialchars($row['Number']) . '<br/>';
}
$result->close();
$conn->close();
该代码确实有效。
我尝试使用 unset($row) 等取消设置一些变量,我确实注意到如果我删除了该行,
$row = $result->fetch_array(MYSQLI_ASSOC);
从第二个 for 循环开始,它将按照循环运行的次数打印 Number 列中的最后一个值。
我希望这是可以理解的。我想知道如果我想针对它运行第二个 for 循环,我需要重新声明 $result 的代码中发生了什么。
慕标琳琳
汪汪一只猫