簡體   English   中英

如何從數據庫表中獲取下一行?

[英]How to get the next row from the Database table?

如何從數據庫表中獲取下一行? 這樣,該行可能是遞增行,也就是說,如果結構中有一個名為“ id”的字段,則該行可以是id ++或緊鄰的下一個遞增行,但它也可以是任何其他包含id的行(NOT VERY NEXT),(因為ID可以從表格中刪除)。

我正在使用Mysql數據庫,下面是我的代碼。

mysql_select_db('pranav_test');
$seletaudit = mysql_query("SELECT * FROM jos_audittrail WHERE live = 0");
while($row2 = mysql_fetch_array($seletaudit))
{
    $audit[] =$row2;
}
$trackid = array();
$tracktable = array();
$i = 0;
foreach($audit as $val)
{
    $trackid[$i] = $val['trackid'];
    $tracktable[$i] = $val['table_name'];   

    if($i!=0)
    {
        $prev_id = $trackid[$i-1];
        $prev_valtab = $tracktable[$i-1];
    }
    if($val['operation'] == 'INSERT')
    {
        if($tracktable[$i]!=$prev_valtab)
        {
            $inserttable = "INSERT INTO '".$tracktable[$i]."' (";
        }


        if($tracktable[$i]==$prev_valtab)
        {
            $insertfield .= "'".$val['field']."', ";
        }
        if($tracktable[$i]==$prev_valtab)
        {
            $insertfield .= "]";
            $insertfield = str_replace(", ]",")",$insertfield);

        }
    }
}

在上面我不需要知道下一行的“ table_name”字段將包含什么內容...我該怎么做...? 請幫助獲取for循環中的下一行以進行檢查。

更新

好的,既然您已經發布了一些代碼,這里是一個更具體的答案:

如果要訪問數組中的下一行,建議使用普通的for循環訪問索引:

for($i = 0; $i<count($audit); $i++) {
     // $audit[$i] is current row
     // $audit[$i+1] is next row
}

但是,當您到達數組末尾時要小心,因為$i+1會超出范圍。

或者,如果您只是想知道為什么當前代碼中的$i行為不正確:您必須在foreach循環的末尾將其遞增:

$i++;

UPDATE2
一個更完整的示例可以清楚地說明(我采用了您的方法,並檢查了一行)

for($i=0; $i<count($audit);$i++)
{
    $curr = $audit[$i];

    if($i>0) {
        $prev = $audit[$i-1];

        if($curr['operation'] == 'INSERT')
        {
            if($curr['table_name']!=$prev['table_name'])
            {
                $inserttable = "INSERT INTO '".$curr['table_name]."' (";
            }
            else {
                // whereever $insertfield comes from
                $insertfield .= "'".$curr['field']."', ";
                $insertfield .= "]";
                $insertfield = str_replace(", ]",")",$insertfield);

            }
        }
    }
}

由於您根本沒有指定連接數據庫的方式,因此有一個通用的答案:

指定查詢以按ID排序結果集:

$query = "SELECT <columns here> FROM <table here> ORDER BY id";

然后獲取結果集(我們有一個虛擬的數據庫類):

$result = $db->query($query);

然后遍歷結果集:

while($row = $result->next()) {
    // do something with row
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM