【发布时间】:2013-09-13 16:34:14
【问题描述】:
我有一组页面,它们采用两个边界(来自用户输入),产生一个值,然后放置在一个 mysql 表中。然后将该值用作边界,该过程重复进行,创建一个新值并将其添加到 sql 表中。
现在,这个过程有一个精确的顺序,我尝试使用 if/else if 语句对它们进行排序:
$result = mysql_query("SELECT * FROM partitions
WHERE subject_id = $subject_id AND stimulus = $stimulus", $DB);
if(!result) {
die("Database query failed: " . mysql_error());}
while ($row = mysql_fetch_array($result)){
if($row[6] == NULL){
$query1 = "UPDATE partitions SET t_1_2 = $t_half WHERE subject_id = $subject_id AND stimulus = $stimulus";
mysql_query($query1) or trigger_error(mysql_error()." in ".$query1);
$target_page = "pan00";
$next_t_a = $row[2]; // from user input
$next_t_b = $t_half; // can i replace $t_half by $row[6]?
}
elseif($row[4] == NULL)
{
$query1 = "UPDATE partitions SET t_1_4 = $t_half WHERE subject_id = $subject_id AND stimulus = $stimulus";
mysql_query($query1) or trigger_error(mysql_error()." in ".$query1);
$target_page = "pan00";
$next_t_a = $row[2];
$next_t_b = $row[4]; }
elseif($row[3] == NULL)
{
$query1 = "UPDATE partitions SET t_1_8 = $t_half WHERE subject_id = $subject_id AND stimulus = $stimulus";
mysql_query($query1) or trigger_error(mysql_error()." in ".$query1);
$target_page = "CE";
$next_t_a = $row[4];
$next_t_b = $row[6]; }
我认为使用 else if 语句会检查条件是否为真,如果是则只执行括号中的代码并跳过循环,但这里 $row[6] 和 $row[4] 都会在同时。这与我为获取行值而设置的 while 循环有关吗?
我尝试使用 goto 和 break 但无济于事。
问题出在while循环中(感谢那些指出它的人),这使我想到了下一个问题:没有这个while循环我如何使用mysql数据?删除它会使页面崩溃,好像php没有存储结果?
【问题讨论】:
-
对于每个
while迭代,只会执行其中一个条件。这意味着,在第一个条件下,第一个条件可以满足,但在第二个条件下 - 其他条件。
标签: php mysql sql if-statement while-loop