php_mysql_assoc忽略第一条记录

时间:2011-02-09 23:51:18

标签: php mysql

您好,我正在尝试查询我的数据库以获取共享相同“ITEMID”的所有记录,该表是对数据库中的项目执行的操作的事务列表。

我已经检查了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
        )

) 

任何想法?

由于 肖恩

4 个答案:

答案 0 :(得分:1)

mysql_fetch_array已经获取第一行。您不在数组中添加此行。 while循环继续第二行。

答案 1 :(得分:1)

你的第一张唱片:

$row1 = mysql_fetch_array( $result1 ); 

循环从下一个(第二个)记录开始:

while ($row1 = mysql_fetch_assoc ( $result1))

答案 2 :(得分: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));

答案 3 :(得分:1)

使用mysqli和fetch_all会更有效率:

mysql_fetch_array add all rows?