我在php中有两个使用存储过程的菜单。我们将其命名为Menu1和Menu2。这个代码用于Menu1:这也是菜单2的代码。
<?php
$sql=$mysqli->query("call selectproducts()");
$i=1;
while($row=mysqli_fetch_array($sql)){
$id=$row['prodid'];
$date=$row['prodname'];
$item=$row['proddescription'];
$qtyleft=$row['prodsupplier'];
$qty_sold=$row['proddate'];
$price=$row['prodprice'];
$sales=$row['prodquantity'];
if($i%2){
?>
<tr id="<?php echo $id; ?>" class="edit_tr">
<?php } else { ?>
<tr id="<?php echo $id; ?>" bgcolor="#f2f2f2" class="edit_tr">
<?php } ?>
<td class="edit_td">
<span class="text"><?php echo $date; ?></span>
</td>
<td>
<span class="text"><?php echo $item; ?></span>
</td>
<td>
<span class="text"><?php echo $qtyleft; ?></span>
</td>
<td>
<span id="last_<?php echo $id; ?>" class="text">
<?php
echo $qty_sold;
?>
</span>
<input type="text" value="<?php echo $rtrt; ?>" class="editbox" id="last_input_<?php echo $id; ?>"/>
</td>
<td>
<span id="first_<?php echo $id; ?>" class="text"><?php echo $price; ?></span>
<input type="text" value="<?php echo $price; ?>" class="editbox" id="first_input_<?php echo $id; ?>" />
</td>
<td>
<span class="text"><?php echo $dailysales; ?>
<?php
echo $sales;
?>
</span>
</td>
</tr>
<?php
$i++;
}
?>
我的问题是,当我在Menu1
中调用存储过程时它可以正常工作,但在Menu2
中它有错误。
根据我的研究,此代码可能有错误,因为我按顺序调用存储过程。
如何修改此代码以便能够第二次调用存储过程?我真的很困惑这个。在我再次调用存储过程之前,似乎需要在执行第一个之后关闭存储过程。我真的不知道该怎么做。
答案 0 :(得分:1)
我猜你正在收到“不同步”的错误?
您需要通过在结果集上调用close()来释放资源,然后才能在同一连接上再次调用数据库。由于您将结果变量命名为$sql
,因此您需要拨打电话$sql->close()
。
例如:
<?php
if( $result = $mysqli->query( "call selectproducts()" ) ) {
$i = 1;
while( $row=mysqli_fetch_array( $result ) ) {
$id=$row[ 'prodid' ];
$date=$row[ 'prodname' ];
$item=$row[ 'proddescription' ];
$qtyleft=$row[ 'prodsupplier' ];
$qty_sold=$row[ 'proddate' ];
$price=$row[ 'prodprice' ];
$sales=$row[ 'prodquantity' ];
if( $i % 2 ) {
?>
<tr id="<?php echo $id; ?>" class="edit_tr">
<?php
} else {
?>
<tr id="<?php echo $id; ?>" bgcolor="#f2f2f2" class="edit_tr">
<?php
}
?>
<td class="edit_td"><span class="text"><?php echo $date; ?></span></td>
<td><span class="text"><?php echo $item; ?></span></td>
<td><span class="text"><?php echo $qtyleft; ?></span></td>
<td>
<span id="last_<?php echo $id; ?>" class="text">
<?php echo $qty_sold; ?>
</span>
<input type="text" value="<?php echo $rtrt; ?>" class="editbox" id="last_input_<?php echo $id; ?>"/>
</td>
<td>
<span id="first_<?php echo $id; ?>" class="text"><?php echo $price; ?></span>
<input type="text" value="<?php echo $price; ?>" class="editbox" id="first_input_<?php echo $id; ?>" />
</td>
<td>
<span class="text"><?php echo $dailysales; ?><?php echo $sales; ?></span>
</td>
</tr>
<?php
$i++;
}
$result->close();
}
?>