MYSQLI只返回1个值,而有2个值

时间:2012-09-04 19:59:20

标签: php mysql mysqli

我已经开始制作一个使用MySql加载视频的视频脚本,而我正在使用Mysqli。 但是,它应该发布2行,但它只发布第二个,而不是第一个。 它使用“Brand”加载结果,因此如果有2行名为“Test”,它只加载第二行,而不加载第一行。 那么,是什么导致了这个?我尝试了3行,但它没有包含第一行。 代码

<?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();
}
?>

3 个答案:

答案 0 :(得分:4)

此行导致错误:

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

使用此行有效地抛出结果集的第一行,因为您在下面的代码中根本不处理$Data。只需删除它,你的脚本应该正常工作(我假设在粘贴代码时关闭</td></tr>序列丢失了,我是对的吗?)

答案 1 :(得分:3)

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

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

抓住第一行......然后你没有用 $ Data 做任何事情,然后抓住第二个(和连续的行)在你的while循环中显示。注释掉上面的那一行将使你的循环抓住并从第一个开始显示它们。

答案 2 :(得分:3)

在您的代码中

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

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