MYSQLI Returns only 1 value while there's 2


MYSQLI Returns only 1 value while there's 2

我已经开始制作一个视频脚本,该脚本使用MySql加载视频,并且我正在使用Mysqli。然而,它应该发布2行,但它只发布第二行,而不是第一行。它使用"Brand"加载结果,所以如果有两行名为"Test",它只加载第二行,而不加载第一行。那么,是什么导致了这种情况呢?我试过三排,但不包括第一排。代码

<?php
{ /* Global Data */
ini_set('display_errors', 0); 
ini_set('error_reporting', -0);
$GetPath = $_GET['b'];
$SqlUser = "root";
$SqlPass = "**Private**";
$SqlHost = "localhost";
$SqlData = "heisteknikk";
}
{ /* Mysql Connect */
$Sql = new mysqli($SqlHost, $SqlUser, $SqlPass, $SqlData);
if ($Sql->connect_error) { die("Sorry, Could not connect (".$Sql->connect_errno.") ".$Sql->connect_error);}
}
{ /* Test */
$Brand = $Sql->real_escape_string($GetPath);
$SqlData = "SELECT * FROM videos WHERE Brand = '".$Brand."'";
$SqlQuery = $Sql->query($SqlData);
if (!$SqlQuery) {
    echo $Sql->error;
}
if ($SqlQuery->num_rows == 0) {
die("Nothing was found");
}
$Data = $SqlQuery->fetch_array(MYSQLI_ASSOC);
echo "<table border='1'>";
while ($Heis = $SqlQuery->fetch_assoc()) {
echo "
<tr><td>".$Heis['Brand']."</td><td>".$Heis['Name']."</td><td>".$Heis['Location']."

";
}
echo "</table>";
$Sql->close();
}
?>

此行导致错误:

$Data = $SqlQuery->fetch_array(MYSQLI_ASSOC);

通过这一行,您可以有效地抛出结果集的第一行,因为在下面的代码中根本没有处理$Data。只需删除它,您的脚本就会正常工作(我假设粘贴代码时关闭</td></tr>序列丢失了,对吗?)

注释掉(或者更好的是,删除)此行:

$Data = $SqlQuery->fetch_array(MYSQLI_ASSOC);

它正在抢占第一排。。。那么您就不会对$Data执行任何操作,然后抓取第二行(也是连续的行)以在while循环中显示。注释掉上面的行将使您的循环抓取并从第一行开始显示它们。

在您的代码中

$Data = $SqlQuery->fetch_array(MYSQLI_ASSOC);
echo "<table border='1'>";
while ($Heis = $SqlQuery->fetch_assoc()) {

您正在获取一行(使用fetch_array),将其丢弃,然后获取另一行(用fetch_assoc)。这可能就是为什么您只看到一行而不是两行