我在使用最简单的代码时遇到了问题。由于某些原因,下面的代码只检索数据库中的第一行。我尝试了一次while循环,但它对我不起作用。下面是我的代码:
<?php
//Connect to the database
require_once('mysql_connect.php') ;
$query = "SELECT * FROM past_due_students WHERE charged_today = 'No' ORDER BY past_due_id" ;
$result = mysqli_query($dbc, $query) ;
$number_of_students = mysqli_num_rows($result)
if ($number_of_students >= 1) {
//Loop through the entire table
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
$student_id = $row['student_id'] ;
$number_of_declines = $row['number_of_declines'] - 1;
//Update the number of declines
$query = "UPDATE past_due_students SET number_of_declines = $number_of_declines WHERE student_id = $student_id" ;
$result = mysqli_query($dbc, $query) ;
$number = mysqli_affected_rows($dbc) ;
if ($number == 1) {
echo '<p><b>The number of declines has been successfully updated.</b></p>' ;
} else {
echo $query ;
}
}//END while loop
}//END if ($number_of_students >= 1) {
?>
它只抓取第一行,而不抓取其他行。
发布于 2011-06-03 23:54:06
您正在覆盖$result
的值
$query = "SELECT * FROM past_due_students....." ;
$result = mysqli_query($dbc, $query) ;
//Loop through the entire table
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
$query = "UPDATE past_due_students SET ...." ;
$result = mysqli_query($dbc, $query) ; <-- OVERWRITTING HERE.
使用不同的变量来保存内部查询结果对象。
发布于 2011-06-03 23:54:23
通过将下一个查询资源分配给同一个变量,您正在销毁从SELECT查询中获得的$result
资源。
请为更新查询使用其他变量。
因此,请更改以下内容:
$query = "UPDATE past_due_students SET number_of_declines = $number_of_declines WHERE student_id = $student_id" ;
$result = mysqli_query($dbc, $query) ;
要这样做:
$query = "UPDATE past_due_students SET number_of_declines = $number_of_declines WHERE student_id = $student_id" ;
$updateResult = mysqli_query($dbc, $query) ;
发布于 2011-06-03 23:55:36
尝试使用其他变量名更改更新查询的$result
https://stackoverflow.com/questions/6229469
复制相似问题