Повторение запроса

#php #mysql #database #server-side

#php #mysql #База данных #на стороне сервера

Вопрос:

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

 $query = "SELECT * FROM web_db WHERE P_Id = " . $random;
$result = mysql_query($query);
if($result) {
while($row = mysql_fetch_array($result)){

    $name = $row[$id];
    echo 'ID:' . $name . '<br>';
    $name = $row[$url];
    echo 'URL: ' . $name . '<br>';
     $name = $row[$tag];
    echo 'Tag:' . $name . '<p>';
}
}
 

При этом появляется одна запись, любой тег. Как я могу заставить его повторяться до тех пор, пока тег не будет соответствовать указанному значению?

Комментарии:

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

2. Какова ваша структура таблицы? Приведите нам какой-нибудь пример по этому поводу.

Ответ №1:

Вы этого не делаете. SELECT оператор возвращает все, что соответствует следующим условиям. Итак, если вы хотите запросить определенную запись тега, игнорируя P_Id , сделайте это :

 $query = "SELECT * FROM web_db WHERE tag = '".$tag."' ORDER BY RAND() LIMIT 1";
 

RAND() в этом случае список упорядочивается случайным образом, в то время как запрос возвращает первый результат, соответствующий используемому тегу.

 $result = mysql_query($query);
if(count($result) > 0) {
  while($row = mysql_fetch_array($result)) {
    echo 'ID:' . $row['id'] . '<br>';
    echo 'URL: ' . $row['url'] . '<br>';
    echo 'Tag:' . $row['tag'] . '<p>';
  }
} else {
  echo 'no entries found';
}
 

Ответ №2:

 if("sometag" === $name) break;
 

это завершает цикл while. после завершения работы вам следует еще раз проверить, был ли найден тег или нет