PHP下一个MySQL行 - 如何移动指针直到函数检查为真?

时间:2010-03-30 01:06:22

标签: php mysql row record

我有一个PHP脚本,它从我的MySQL数据库中的一行获取一个值,通过一个函数运行它,如果它确定它是真的返回一个值,如果它是假的,它需要转到下一个值数据库并检查一个,直到最终返回true。 我想我需要使用mysql_fetch_assoc,但我不确定以什么方式使用它...我希望我可以发布我的代码更具体,但它是很多代码,而且大部分代码都没有关系这个问题......

4 个答案:

答案 0 :(得分:2)

您可以在数据库中执行“功能”吗?处理表中的每一行以检查某种类型的条件是非常低效的。这正是数据库擅长的,即有效处理查询并快速获得答案。

因此,我建议在数据库端查看如何完成所有操作,以便您的PHP代码只是获取最终结果(即由函数过滤的行)。也许如果您提供有关“功能”的更多详细信息,可以提供更具体的答案。

答案 1 :(得分:0)

你可以使用mysql_fetch_array,只需跳转使用$ row [id]而不是$ row ['name']获取的值。 假设你的函数返回true,你只需使用$ row [lastid + 1]。

如果ID不是增量的,这可能有效:

$qry_result = mysql_query($qry) or die(mysql_error());
while ($row = mysql_fetch_array($qry_result)) {
    $result = yourfunction($row['whatever');
    if ($result != false)
         break;
}

还有一个php函数next(),它将指针前进到下一个数组元素。在您的函数中,您可以实现一个数组构建器,然后使用它在元素之间循环。取决于您的功能实际执行的内容或脚本目的。如果有很多结果,可能会导致一些负荷。

答案 2 :(得分:0)

您可以尝试这样的事情:

SELECT *
FROM table
WHERE field NOT LIKE '%$sessionvar:%';

我认为这就是你追求的目标?

答案 3 :(得分:0)

  1. 如上所述,您不应该以这种方式检查数据库。数据库与纯文本文件有一点区别。
  2. 您的数据库中不应该有一个由value1分隔的值的字段:value2 | value1:value2 | value1:value2。它必须是单独的字段。数据库与纯文本文件有一点区别,你最好学习它。