PHP следующая строка MySQL – как переместить указатель, пока функция не проверит истинность?

StackOverflow https://stackoverflow.com/questions/2542248

  •  23-09-2019
  •  | 
  •  

Вопрос

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

Нет правильного решения

Другие советы

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

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

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

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

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

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

Я думаю, это то, чего вы добиваетесь?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top