如果file.php?id = * not found /不存在,则重定向/ echo

时间:2011-01-07 12:37:28

标签: php mysql row

嘿伙计们, PHP和MySQL newguy在这里。写了这个php文件,它显示了相对于URL中所述ID的行的内容(例如,第3行是file.php?id = 3),来源:http://pastie.org/1437017

如果我转到不存在相对行的id(例如.php?id = 99999999999999),我应该把它重新定向到另一个页面或echo'FAIL'。我虽然使用if命令,但无法弄清楚语法。我也环顾网络,但没有用。

谢谢你们

3 个答案:

答案 0 :(得分:3)

您有以下一行:

$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页面提供适当的内容,而不是重定向到其他页面。我可以想象一下重定向是合适的情况,但如果您的重定向页面显示“找不到项目”,这是错误的方法。

答案 1 :(得分:0)

我会将您的查询重新设计为之类的

SELECT * FROM table WHERE id = $id;

其中$ id是$ _GET值 - 当然已经过消毒。

如果该查询返回任何结果(mysql_num_rows($result)==1)

然后你知道找到了一个有效的记录。如果没有,则id不存在,因此您可以抛出错误/重定向。

答案 2 :(得分:0)

mysql_num_rows()为您提供select中的行数,因此如果该值为0,则表示没有任何行具有该给定ID。

if (mysql_num_rows($result)==0){
    echo "There are no rows with this id";
}else{
     // Your normal code
}