2011-02-09 20 views
1

こんにちは私はデータベース内の項目に対して行われた操作のトランザクションリストと同じ "ITEMID"を共有するすべてのレコードを取得するために自分のデータベースを照会しようとしています。php_mysql_assocは最初のレコードを無視します

私はphpmyadminでSQLクエリをチェックして正しく動作しますが、PHPコードを実行すると毎回最初のレコードが無視されます。ここに私のコードは

<?php 
// Get the quantity of each item 
$sql1 = 'SELECT `IDPENTERED` , `ITEMID` , `QTY` , `VALUE` FROM `tblpieceentered` 
    WHERE `ITEMID` =307 ' ; 

echo $sql1."<br>"; 

// Retrieve all the data from the table 
$result1 = mysql_query($sql1) 
or die(mysql_error()); 

// store the record of the table into $row1 
$row1 = mysql_fetch_array($result1); 

$i = 1; 
$num = mysql_num_rows ($result1); 

echo "Num rows: $num <br>"; 

while ($row1 = mysql_fetch_assoc ($result1)) { 
    $data_array[$i] = $row1; 
$i++; 
} 

echo "<pre>"; 
print_r ($data_array); 
echo "</pre>"; 
?> 

だ結果は次のとおりです。

SELECT `IDPENTERED` , `ITEMID` , `QTY` , `VALUE` FROM `tblpieceentered` WHERE `ITEMID`  =307 
Num rows: 5 

Array 
(
    [1] => Array 
     (
      [IDPENTERED] => 1999 
      [ITEMID] => 307 
      [QTY] => -1 
      [VALUE] => -0.21 
     ) 

    [2] => Array 
     (
      [IDPENTERED] => 2507 
      [ITEMID] => 307 
      [QTY] => -10 
      [VALUE] => -2.1 
     ) 

    [3] => Array 
     (
      [IDPENTERED] => 3039 
      [ITEMID] => 307 
      [QTY] => 1 
      [VALUE] => 0.21 
     ) 

[4] => Array 
     (
      [IDPENTERED] => 3040 
      [ITEMID] => 307 
      [QTY] => -1 
      [VALUE] => -0.21 
     ) 

) 

任意のアイデア?

おかげショーン

+1

あなたの配列を '1'から始める場合を除き、あなたは '$ data_array [] = $ row'を使い、$ iカウンタをスキップすることができます。すべての行が配列の末尾に追加されます。 – GolezTrol

答えて

1

は、mysql_fetch_arrayは、既に最初の行をフェッチします。配列にこの行を追加しないでください。 whileループは2番目の行に続きます。

1

そこに行くあなたの最初のレコード:ループは次の(第2)のレコードで開始

$row1 = mysql_fetch_array($result1); 

:あなたは whileループの前に最初の項目を取得しているためである

while ($row1 = mysql_fetch_assoc ($result1)) 
+1

ありがとう、それは私がいくつかの異なるファイルからコピーの貼り付けをすることで得られるものです..... –

1

$row1 = mysql_fetch_array($result1);行を削除してください。あなたがループする前に、最初の行にアクセスしたい場合

あるいは、あなたの代わりにdo-whileループを使用することができます。

// store the record of the table into $row1 
$row1 = mysql_fetch_array($result1); 
$i = 1; 
$num = mysql_num_rows ($result1); 
echo "Num rows: $num <br>"; 
do { 
    $data_array[$i] = $row1; 
    $i++; 
} while ($row1 = mysql_fetch_assoc ($result1)); 
1

使用mysqliのとfetch_allは、はるかに効率的になります。

mysql_fetch_array add all rows?

+0

おかげで@ f00私はそれを試してみましょう今日はクエリが1500レコードを返し、データベースは常に成長している。 –

関連する問題