redirect / echo, если file.php? id = * не найден / не существует - PullRequest
0 голосов
/ 07 января 2011

Эй, ребята, PHP и MySQL newguy здесь. Написал этот php-файл, который отображает содержимое строки относительно идентификатора, указанного в URL (например, строка 3 - file.php? Id = 3), вот источник: http://pastie.org/1437017

Если я перейду к идентификатору, для которого соответствующая строка не существует (например, .php? Id = 99999999999999), что я добавлю, чтобы он перенаправлялся на другую страницу, или выдает «FAIL». Я думал об использовании команды if, но не смог понять синтаксис. Я также просмотрел сеть, но безрезультатно.

Спасибо, ребята

Ответы [ 3 ]

3 голосов
/ 07 января 2011

У вас есть следующая строка:

$name=mysql_result($result,$id,"name");

Если нет строки с идентификатором $id, $name будет false. Поэтому вы можете сделать следующее:

if (!$name) {
    header('Location: http://yoururl.com');
    die();
}

Еще лучше изменить ваш запрос следующим образом:

$query="SELECT * FROM likes where id=$id";

, а затем сделать

if (!$num) {
    header('Location: http://yoururl.com');
    die();
}

где $num - номер возвращаемой строки, как установлено в существующем коде.


Редактировать Как уже отмечалось в этом вопросе, вероятно, лучше обслуживать страницу 404 Not Found с соответствующим содержанием, чем перенаправлять на другую страницу. Я могу представить себе ситуацию, когда перенаправление уместно, но если на вашей странице перенаправления написано «элемент не найден», это неправильный подход.

0 голосов
/ 07 января 2011

mysql_num_rows () дает вам количество строк в вашем выборе, поэтому, если это значение равно 0, вы знаете, что нет ни одной строки с этим данным идентификатором.

if (mysql_num_rows($result)==0){
    echo "There are no rows with this id";
}else{
     // Your normal code
}
0 голосов
/ 07 января 2011

Я бы изменил ваш запрос на что-то , например

SELECT * FROM table WHERE id = $id;

, где $ id - это значение $ _GET - конечно, очищенное.

если этот запрос возвращает какие-либо результаты (mysql_num_rows($result)==1)

, то вы знаете, что найдена правильная запись.Если нет, идентификатор не существует, поэтому вы можете выдать ошибку / перенаправление.

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