我在循环中遇到了一些麻烦,因为我做了一些xml文件以进行撤回我必须为每条记录指定一个值(sepa)必须调用第一条记录并将其设置为"first",nexts必须被调用并设置为RECURRENT,最后一个必须调用并设置"FINAL"
为此,我做了一个循环,将要设置到xml文件中的reord插入到我的数据库中。
对于第一次,我没有问题,对于复发,我也没有问题,但我不知道如何知道记录何时是我循环的最后一次,所以我可以设置"最终"
下面是我的代码
$i=0;
while ($prlvt = mysql_fetch_assoc($result5)):
if($i==0){
$statement = 'FIRST';
}elseif($i>0){
$statement = 'RECURRENT';
}
$prlvt_rqt = "INSERT INTO `prelevements` SET
`prelevements__n_doss` = '{$_GET['n_doss']}',
`prelevements__statut` = 0,
`prelevements__date_record` = '{$prlvt['date_action']}',
`prelevements__montant` = '{$prlvt['description']}',
`prelevements__statement` = '{$statement}'
";
mysql_query($prlvt_rqt);
$i++;
endwhile;
问题是我不知道如何设置我的"最终"声明。
任何形式的帮助都将不胜感激。
请参阅mysql_num_rows
:的文档
if($i==0){
$statement = 'FIRST';
}elseif($i == mysql_num_rows($result5) - 1){
$statement = 'FINAL';
}else{
$statement = 'RECURENT';
}
考虑切换到mysqli_*
,从PHP 5.5.0开始,mysql_*
将被弃用。
在您的情况下,最好使用mysql_num_rows
。但在无法添加if
的情况下,您可以选择:
while(/*..*/){
}
mysql_query('UPDATE prelevements SET statmet = "FINAL" WHERE id = '.mysql_insert_id();
但是
- 将答案与
mysql_num_rows
一起使用 - 使用
PDO
或Mysqli
而不是Mysql
您可以获得项目总数mysql_num_rows()
$i=0;
$tot = mysql_num_rows($result5);
while ($prlvt = mysql_fetch_assoc($result5)):
if ($i==0) $statement = 'FIRST';
elseif($i == ($tot-1)) $statement = 'LAST';
else $statment = 'RECURRENT';
// rest of your code
$i++;
endwhile;
除此之外,我强烈建议您将方法切换到PDO,因为旧语句现在已经过时,并且可能存在漏洞
$i=0;
while ($prlvt = mysql_fetch_assoc($result5)):
if($i==0){
$statement = 'FIRST';
}elseif($i == mysql_num_rows($result5)){
$statement = 'FINAL';
}elseif($i>0){
$statement = 'RECURRENT';
}
$prlvt_rqt = "INSERT INTO `prelevements` SET
`prelevements__n_doss` = '{$_GET['n_doss']}',
`prelevements__statut` = 0,
`prelevements__date_record` = '{$prlvt['date_action']}',
`prelevements__montant` = '{$prlvt['description']}',
`prelevements__statement` = '{$statement}'
";
mysql_query($prlvt_rqt);
$i++;
endwhile;
这是完整的解决方案。