数组获取时间一行值被代码跳过
Array Fetching time one row value is skipping by code
在 php 代码中,我尝试从我的数据库中获取数据,但是当我获取数据两次或下一次获取数据时,代码的输出跳过了我输出中的第一个值..
$result = mysql_query($order) or die(mysql_error());
echo mysql_num_rows($result);
$row=mysql_fetch_array($result);
while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[name]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[address]</td>");
echo ("<td><a href=\"edit_form.php?id=$row[id]\">Edit</a></td></tr>");
}
这是什么原因..
删除你的第一条声明:
$row=mysql_fetch_array($result);
上述语句从您的查询中获取下一行并将其作为数组存储在变量 $row 中。但是,由于您有一个 while 循环,每次循环 运行 时它也在做同样的事情,它会用可用的下一行覆盖 $row 中的旧值。因此,当您第一次进入循环时,您的第一行将被删除。删除上面的行将为您解决这个问题。
您正在呼叫 $row=mysql_fetch_array($result);
两次
$row 变量第一次包含第一行。
您第二次遍历所有行,但因为您已经获取了第一行,所以不会再次遍历该行。
解决方法是:去掉对mysql_fetch_array($result);
的第一次调用
因为,如此处所述:http://php.net/manual/en/function.mysql-fetch-array.php
Returns an array that corresponds to the fetched row and moves the
internal data pointer ahead.
所以通过第一次调用函数
// else{echo "false";}
$row=mysql_fetch_array($result);
// echo mysql_num_rows($row);
您正在向前移动指针,因此当您在 while 循环中调用该函数时
while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[name]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[address]</td>");
echo ("<td><a href=\"edit_form.php?id=$row[id]\">Edit</a></td></tr>");
}
指针已经向前移动
要解决您的问题,请删除第一个 $row=mysql_fetch_array($result);
,只保留 while 循环中的那个。
您的代码是 correct.The 唯一要做的就是删除 mysql_fetch_array($result) 的第一个赋值。
$row=mysql_fetch_array($result)
只需删除此分配,然后 运行 您的 code.It 将正常工作。
在 php 代码中,我尝试从我的数据库中获取数据,但是当我获取数据两次或下一次获取数据时,代码的输出跳过了我输出中的第一个值..
$result = mysql_query($order) or die(mysql_error());
echo mysql_num_rows($result);
$row=mysql_fetch_array($result);
while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[name]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[address]</td>");
echo ("<td><a href=\"edit_form.php?id=$row[id]\">Edit</a></td></tr>");
}
这是什么原因..
删除你的第一条声明:
$row=mysql_fetch_array($result);
上述语句从您的查询中获取下一行并将其作为数组存储在变量 $row 中。但是,由于您有一个 while 循环,每次循环 运行 时它也在做同样的事情,它会用可用的下一行覆盖 $row 中的旧值。因此,当您第一次进入循环时,您的第一行将被删除。删除上面的行将为您解决这个问题。
您正在呼叫 $row=mysql_fetch_array($result);
两次
$row 变量第一次包含第一行。
您第二次遍历所有行,但因为您已经获取了第一行,所以不会再次遍历该行。
解决方法是:去掉对mysql_fetch_array($result);
因为,如此处所述:http://php.net/manual/en/function.mysql-fetch-array.php
Returns an array that corresponds to the fetched row and moves the internal data pointer ahead.
所以通过第一次调用函数
// else{echo "false";}
$row=mysql_fetch_array($result);
// echo mysql_num_rows($row);
您正在向前移动指针,因此当您在 while 循环中调用该函数时
while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[name]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[address]</td>");
echo ("<td><a href=\"edit_form.php?id=$row[id]\">Edit</a></td></tr>");
}
指针已经向前移动
要解决您的问题,请删除第一个 $row=mysql_fetch_array($result);
,只保留 while 循环中的那个。
您的代码是 correct.The 唯一要做的就是删除 mysql_fetch_array($result) 的第一个赋值。
$row=mysql_fetch_array($result)
只需删除此分配,然后 运行 您的 code.It 将正常工作。