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

PHP下一个MySQL行-如何移动指针直到函数检查为真?,php,mysql,row,record,Php,Mysql,Row,Record,我有一个PHP脚本,它从MySQL数据库中的一行中获取一个值,通过一个函数运行它,如果它确定为true,则返回一个值,如果为false,则需要转到数据库中的下一个值并检查该值,直到最终返回true。 我想我需要使用mysql\u fetch\u assoc,但我不确定用什么方式使用它。。。我希望我可以发布更具体的代码,但是代码太多了,而且大部分都与这个问题无关……您可以在数据库中执行“函数”吗?处理表中的每一行以检查某种类型的条件是非常低效的。这正是数据库擅长的,即高效地处理查询并快速获得答案

我有一个PHP脚本,它从MySQL数据库中的一行中获取一个值,通过一个函数运行它,如果它确定为true,则返回一个值,如果为false,则需要转到数据库中的下一个值并检查该值,直到最终返回true。 我想我需要使用mysql\u fetch\u assoc,但我不确定用什么方式使用它。。。我希望我可以发布更具体的代码,但是代码太多了,而且大部分都与这个问题无关……

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


因此,我建议您看看如何在数据库端完成这一切,以便PHP代码只获取最终结果(即通过函数过滤的行)。如果您提供更多关于“函数”正在做什么的详细信息,也许可以提供更具体的答案。

您可以使用mysql\u fetch\u数组,只需跳转使用$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(),它将指针前进到下一个数组元素。在您的函数中,您可以实现一个数组生成器,然后使用它在元素之间循环。取决于函数的实际功能或脚本目的。如果有很多结果,可能会导致一些负载。

您可以尝试以下方法:

SELECT *
FROM table
WHERE field NOT LIKE '%$sessionvar:%';
我想这就是你想要的

  • 如上所述,您不应该以这种方式检查数据库。数据库与纯文本文件略有不同
  • 数据库中的字段不应包含由value1:value2 | value1:value2 | value1:value2分隔的一组值。它必须是单独的字段。数据库与纯文本文件有一点不同,您最好学习它

  • 哦,不,我需要对照PHP会话变量检查它。它不需要处理太多的数据,也不需要经过两三个左右的过程才能实现。您可以在查询中始终使用PHP会话变量作为参数:SELECT*from mytable,其中col1=我会这样做,dcp,但实际上我正试图找到其中一个值不包含会话变量的值。你知道有没有一种方法可以通过MySQL命令来实现这一点吗?当然,SQL也有这个功能。你会使用操作符,它是“不相等”的SELECT*从mytable中选择col1哇,我希望我以前知道这个操作符。。。也许我应该在开始之前查一下。嗯,问题是我检查的字段有一组值,它们之间用value1:value2 | value1:value2 | value1:value2等等隔开。。。这是用户名及其提交的值,出于各种原因,我需要将其压缩到一列中,并且我需要检查值中是否只有用户名或值1。我一直在使用explode()来分离和检查。。。我担心这个MySQL操作员也会检查value2,对吗?很有趣。如果主键不是增量的,这会起作用吗?使用非增量更新了您案例的解决方案。感谢您的宝贵意见。我认为这会很有帮助。非常感谢。