php mysql检查前一行

时间:2011-07-13 19:02:00

标签: php mysql

我有一个选择查询的输出,如下所示

id          price  valid    
1000368     69.95   1       
1000369     69.94   0       
1000370     69.95   0 

现在在php中我试图在功能中传递id 1000369。只有当id为1000368的有效值= 1时,才能执行函数。如果它不是1那么它将抛出错误。因此,如果传递的id是1000370,它将检查1000369的有效值是否为1。

我怎么检查这个?我认为这在逻辑上是可行的,但我无法编码它我尝试使用foreach但最后它总是检查最后一条记录1000370,所以它抛出错误。

问候

4 个答案:

答案 0 :(得分:3)

使用布尔变量:

<?php
$lastValid=false;
while($row = mysql_fetch_array($result))
{
    if ($lastValid) {
        myFunction();
    }
    $lastValid = $row['valid'];
}
?>

(原谅可能的错误,目前无法访问控制台。)

答案 1 :(得分:1)

如果我理解正确,您想检查以前的ID是否为valid

$prev['valid'] = 0;

foreach($input as $i){

    if($prev['valid']){

        // Execute function

    }

    $prev = $i;

}

答案 2 :(得分:0)

<?php
$sql = "SELECT * FROM tablename";
$qry = mysql_query($sql);

while($row = mysql_fetch_array($qry))
{
    if ($row['valid'] == 1)
    {
        // do some actions
    }
}
?>

答案 3 :(得分:0)

我真的非常推荐一些教程。这是基本的东西。

以下是如何申请特定记录:

//This is to inspect a specific record
$id = '1000369'; //**some specified value**
$sql = "SELECT * FROM data_tbl WHERE id = $id";
$data = mysql_fetch_assoc(mysql_query($sql));

$valid = $data['valid'];

if ($valid == 1)
  //Do this
else
  //Do that

以下是如何遍历所有记录并检查每个记录。

//This is to loop through all of it.
$sql = "SELECT * FROM data_tbl";
$res = mysql_query($sql);
$previous_row = null;

while ($row = mysql_fetch_assoc($res))
{
  some_action($row, $previous_row);
  $previous_row = $row; //At the end of the call the current row becomes the previous one. This way you can refer to it in the next iteration through the loop
}

function some_action($data, $previous_data)
{
  if (!empty($previous_data) && $condition_is_met)
  {
    //Use previous data
    $valid = $previous_data['valid'];
  }
  else
  {
    //Use data
    $valid = $data['valid'];
  }

  if ($valid == 1)
  {
    //Do the valid thing
  }
  else
  {
    //Do the not valid thing
  }

  //Do whatever
}

以下是一些优秀教程的链接: http://www.phpfreaks.com/tutorials
http://php.net/manual/en/tutorial.php