[英]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.