2012-09-04 75 views
0

我已经开始制作一个使用MySql加载视频的视频脚本,而且我正在使用Mysqli。 但是,有2行应该发布,但它只发布第二个,而不是第一个。 它使用“品牌”加载结果,所以如果有两行名为“测试”,它只加载第二个,但不是第一个。 那么,这是什么造成的?我已经尝试了3行,并没有包含第一行。 代码MYSQLI只返回1个值,而有2个

<?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

肯定不会导致你的错误,但你似乎在while循环内的回声结束时错过了''。 – ccKep

回答

4

这行导致错误:

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

这一行你有效地扔出去的结果集的第一行,因为你不处理$Data在所有代码如下。只是将其删除,你的脚本应该工作正常(我假设关闭</td></tr>顺序粘贴代码的时候丢了,对吗?)

3

注释掉(或更好,但删除)这条线:

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

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

3

在你的代码

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

你取行(与fetch_array),把它扔了,然后获取另一行(与fetch_assoc)。这可能就是为什么你只看到一行而不是两行的原因