#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. после завершения работы вам следует еще раз проверить, был ли найден тег или нет