我想从我的表中选择所有记录并循环遍历所有这些记录,直到找到 numtimespaid 列等于 0 的记录。找到该列后,我想将该记录更新为 2,然后退出。这是我无法正常工作的东西:
$query1 = "SELECT * FROM ".$line." ORDER BY datestamp, timestamp";
$result1 = mysql_query($query1) or die(mysql_error());
while($row = mysql_fetch_array($result1)){
if ($row[numtimespaid] == 0) {
$queryupdate="UPDATE ".$line." SET numtimespaid=1";
$resultu=mysql_query($queryupdate);
break;
}
}
关于我做错了什么和/或这样做的正确方法有什么想法吗?
最佳答案
没有必要从 SELECT
语句中遍历行集。您可以简单地用该值更新第一行。此查询将更新恰好匹配 numtimespaid = 0
的一条记录。如果您想更新符合该条件的所有行,只需删除 LIMIT 1
。
$result = mysql_query("UPDATE $line SET numtimespaid=1 WHERE numtimespaid = 0 ORDER BY datestamp, timestamp LIMIT 1");
顺便说一句,我们不知道 $line
的内容是什么,但希望您已经正确过滤了来自用户输入的值。如果它确实来自用户输入,建议根据可能的表名白名单检查它的值:
// $line can be one of table1,table2,table3
if (!in_array($line, array('table1','table2','table3')) {
// FAIL, don't execute the query
}
关于php - 遍历记录,更新一条记录,然后退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050729/