PHP следующая строка MySQL - как переместить указатель, пока функция не проверит true? - PullRequest
0 голосов
/ 30 марта 2010

У меня есть PHP-скрипт, который берет значение из строки в моей базе данных MySQL, запускает его через функцию, и если он определяет, что это правда, возвращает одно значение, а если это ложь, ему нужно перейти к следующему значению в базу данных и проверяйте это до тех пор, пока в конце концов не вернете истину. Я думаю, что мне нужно использовать mysql_fetch_assoc, но я не совсем уверен, каким образом его использовать ... Я хотел бы опубликовать свой код, чтобы быть более конкретным, но это много кода, и большая часть не имеет никакого отношения к этот вопрос ...

Ответы [ 4 ]

2 голосов
/ 30 марта 2010

Является ли "функция" чем-то, что вы могли бы сделать вместо этого в базе данных? Действительно неэффективно обрабатывать каждую строку в таблице, чтобы проверить наличие какого-либо условия. Это именно то, что хорошо для баз данных, а именно, эффективная обработка запросов и быстрое получение ответов на них.

Поэтому я бы порекомендовал посмотреть, как сделать все это на стороне базы данных, чтобы ваш код PHP просто выбирал конечный результат (то есть строки, отфильтрованные функцией). Может быть, если вы предоставите более подробную информацию о том, что делает ваша «функция», можно дать более конкретный ответ.

0 голосов
/ 30 марта 2010
  1. Вы не должны проверять базу данных таким образом, как указано выше. База данных имеет небольшое отличие от простого текстового файла.
  2. В вашей базе данных не должно быть поля, содержащего набор значений, разделенных значением1: значение2 | значение1: значение2 | значение1: значение2 Это должны быть отдельные поля. База данных немного отличается от обычного текстового файла, и вам лучше ее изучить.
0 голосов
/ 30 марта 2010

Вы можете попробовать что-то вроде этого:

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

Я думаю, это то, что вы ищете?

0 голосов
/ 30 марта 2010

Вы можете использовать mysql_fetch_array и просто переходить к значениям, полученным с использованием $ row [id], а не $ row ['name']. Скажем, ваша функция возвращает true, вы просто используете $ row [lastid + 1].

Если идентификатор не является инкрементным, это может сработать:

$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 (), которая перемещает указатель на следующий элемент массива. В вашей функции вы можете реализовать построитель массива, а затем переключаться между элементами с этим. Зависит от того, что на самом деле делает ваша функция или цель скрипта. Это может привести к некоторой нагрузке, если будет много результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...