0

1つの結果のみを表示する次のコードがあります。ただし、データベースにはproduct_id='1'の6つの行があります。私が話している$orderのは、6つではなく1つだけです。なにが問題ですか?

$get = "SELECT * FROM artikelbestelling WHERE product_id = '1' LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());

while($row = mysql_fetch_assoc($doget))
{
$order = $row['ordernummer'];
$artikel = $row['artikelnummer'];
echo "<strong>$order</strong><br />";
}

私のデータベース構造:

id(primary&autoincrement)(int 11)

product_id(int 11)

数値(int 11)

ordernummer(int 11)

4

3 に答える 3

1

IDはintであるため、''を使用する必要はありません。

$get = "SELECT * FROM artikelbestelling WHERE product_id = '1' LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());

while($row = mysql_fetch_array($doget))
{
$order = $row['ordernummer'];
$artikel = $row['artikelnummer'];
echo "<strong>$order</strong><br />";
}
于 2012-07-17T18:44:15.553 に答える
0

すぐに気付くことが2つありますが、違いはないはずですが、違いがあるかどうかを確認するだけの価値があるかもしれません。まず、product_id列が文字列ではなく数値列であると想定して、「1」の代わりに1だけを使用してみてください。次に、mysql_fetch_assoc()falseと同等と評価される可能性のある式ではなく、FALSEに対する結果を明示的にチェックします。

$get = "SELECT * FROM artikelbestelling WHERE product_id = 1 LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());

while(($row = mysql_fetch_assoc($doget)) !== FALSE)
{
    $order = $row['ordernummer'];
    $artikel = $row['artikelnummer'];
    echo "<strong>$order</strong><br />";
}

編集:

コードを次のように変更すると、何が得られますか?

$get = "SELECT * FROM artikelbestelling WHERE product_id = 1 LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());

$index = 0;
while(($row = mysql_fetch_assoc($doget)) !== FALSE)
{
    $order = $row['ordernummer'];
    $artikel = $row['artikelnummer'];
    echo $index++ . ": <strong>$order</strong><br />";
}

具体的には、0から7までカウントしますか、それとも行0だけを表示しますか?私はそれが次のいずれかでなければならないと思っています:

  • 実際には、1行の結果しか返されていません(これはmysql_num_rows()、8を返すステートメントと矛盾します)。
  • mysql_fetch_assoc()たった1行の後に誤ってFALSEを返している(これは、PHPまたはMySQLドライバーに影響を与えるある種のバグを示しており、通常はほとんどありません)、または
  • 空のタグに関するMarcBのコメントによると、ループを本来のように繰り返していますが、結果を誤って解釈しています。

これは、効果的にそれがどれであるかを絞り込むのに役立つ可能性があります。

于 2012-07-17T18:39:40.230 に答える
0

これを試して.....

$get = "SELECT * FROM artikelbestelling WHERE product_id = '1'  
LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());

while($row = mysql_fetch_array($doget))
{
echo "$row[ordernummer]";
echo "<br />";
echo "$row[artikelnummer]";
}
于 2012-07-17T19:10:01.450 に答える