1

准备好的语句:我正在使用两个 while 循环,但我的内部 while 循环不起作用。当我使用内部while循环时,它只显示一条记录,但是当我删除内部while循环时,我可以看到所有记录..我该如何解决?

这是我的代码

<table width="100%"  style="background-color:#F2F2F2;border:1px solid #F2F2F2;border-radius:15px;">
<form name="form1" id="form1" method="post" action="">  
<tr>
<td align="">
<table width="100%"  style="background-color:#F2F2F2;border:1px solid #F2F2F2;border-radius:15px;">
<tr class="table-heading">
<td >&nbsp;Qty.</td>
<td >&nbsp;Writer</td>
<td >&nbsp;Status</td>
<td >&nbsp;</td>
</tr><?php  
if($stmt->prepare("select id,qty,action_flag,status,writer from tbl_order where status=? and action_flag=? and order_id=?"))
{
$action='confirm';
$status='orderprocessing';
$ordid=$_GET["ordid"];
$stmt->bind_param('sss',$status,$action,$ordid);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id,$qty,$action_flag,$status,$writer);
}   
while($stmt->fetch())       // outer while loop
{
?>
<tr align="left" style="line-height:30px;font-size:12px;">
<td >&nbsp;<?php echo $qty; ?></td>
<td align="center" width="160" >
<select name="selwrt" id="selwrt" class="reginput" style="text-transform:capitalize;width:150px;height:25px;" >
<option value="">Select Writer</option>
<?php
if($stmt->prepare("select id,writer_name from tbl_writer order by writer_name"))
{   
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($wid,$writer_name);  
}   
while($stmt->fetch())         // inner while loop
{
?>
<option value="<?php echo $wid; ?>"<?php if($writer==$wid) echo 'selected="selected"'; ?>><?php echo $writer_name; ?></option><?php } ?>
</select>
</td>
<td align="center" width="160"  ><select name="selst" id="selst" class="reginput" style="text-transform:capitalize;width:150px;height:25px;">
<option value="">Select Status</option>
<option value="inprogress"<?php if($status=='inprogress') echo 'selected="selected"'; ?>>In Progress</option>
<option value="jobdone"<?php if($status=='jobdone') echo 'selected="selected"'; ?>>Job Done</option>
</select>
</td>
<td  style="vertical-align:top;" ><input type="submit" name="btnsave" id="btnsave" value="SAVE" class="btnstyle" style="padding:3px;"/>
<input type="hidden" name="pid" id="pid" value="<?php echo $id; ?>" ></td>                      
</tr><?php } ?>
<tr><td>&nbsp;</td></tr>
</table>
4

2 回答 2

0

这是因为您在第一次通过循环时将初始结果替换为第二个结果。由于您想同时使用两个结果集,请为两个请求使用单独的变量 - 即$stmtwhile循环内用不同的实例替换。

于 2013-09-05T06:08:41.623 回答
0

正如马克所说,您对两者使用相同的值。我真的不知道您要调用什么数据,但是因为它们相同,所以会发生以下情况。

While (outer loop) {
  Starts with first record
While (Inner Loop) {
  Goes through all the data
}
  Goes back to the top and than realizes that all the data is completed (which was done    in the inner loop)
}

2 解决此问题的方法。每次使用不同的对象,这可能是相当不切实际的。(两个不同的方法做同样的事情)你也可以使用 foreach 循环。如果可行,这也将以更清洁的方式解决问题。

于 2013-09-05T06:19:38.963 回答