0

MySql を使用してビデオをロードするビデオ スクリプトの作成を開始し、Mysqli を使用しています。ただし、投稿する必要がある行は2つありますが、最初の行ではなく、2番目の行のみを投稿します。「Brand」を使用して結果をロードするため、「Test」という名前の行が 2 つある場合、2 番目の行のみをロードし、最初の行はロードしません。それで、これを引き起こしているのは何ですか?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();
}
?>
4

3 に答える 3

4

この行はバグを引き起こします:

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

$Data以下のコードではまったく処理を行わないため、この行を使用すると、結果セットの最初の行を効果的に破棄できます。それを削除するだけで、スクリプトは正常に動作するはずです (</td></tr>コードを貼り付けたときに終了シーケンスが失われたと思いますが、そうですか?)

于 2012-09-04T20:01:57.597 に答える
3

次の行をコメント アウト (または削除) します。

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

最初の行を取得しています...その後、 $Dataを使用して何もせず、while ループで表示するために 2 番目 (および連続する行) を取得しています。上記の行をコメントアウトすると、ループが取得され、最初の行から表示されます。

于 2012-09-04T20:02:10.297 に答える
3

あなたのコードで

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

行をフェッチし( を使用fetch_array)、それを破棄してから別の行をフェッチしています( を使用fetch_assoc)。それがおそらく、2 行ではなく 1 行しか表示されない理由です。

于 2012-09-04T20:02:56.430 に答える