404如果找不到记录 - 如何检查记录是否存在?

时间:2011-08-07 20:18:27

标签: mysql validation http-status-code-404

我认为我在上一个问题中没有充分解释自己。

我有一个显示各种元素的页面,即使它从数据库调用的id不存在或被删除(这会引发各种丑陋的错误以及搜索引擎继续列出不存在的页面)。

如果$ id不存在,您是否可以修改下面显示的页面代码的第一部分以发送404(或至少发送到包含404标题的projecterror.php)?非常感谢!

<?php
include_once("includes/linkmysql.php");
$adda=$_GET['a']; 
$cont=$_GET['c']; 
$select="SELECT * FROM projects where id='$id'";
$qselect = mysql_query($select);
while ($row = mysql_fetch_array($qselect)) { 

4 个答案:

答案 0 :(得分:2)

由于仅依赖于HTTP错误代码有时可能有点模棱两可,我建议您除了通用HTTP状态代码外,还要在XML / JSON响应消息中包含错误。 这样您就可以提供更好的日志记录,并且由于错误在消息中详细说明,它将大大缩短调试时间/为您提供更清楚地呈现错误来源的机会。

答案 1 :(得分:1)

<?php
include_once("includes/linkmysql.php");
$adda=$_GET['a']; 
$cont=$_GET['c']; 
$select="SELECT * FROM projects where id='$id'";
$qselect = mysql_query($select);
if( mysql_num_rows( $qselect ) === 0 )
{
   header("HTTP/1.1 301 Moved Permanently");
   header( 'Location: http://examplesite.domain/errorpage' ) ;
   exit;
}
while ($row = mysql_fetch_array($qselect)) { 

这些是@Vivek Goel根据您提出的其他问题向您提供的标题代码

答案 2 :(得分:0)

include_once("includes/linkmysql.php");
$adda=$_GET['a']; 
$cont=$_GET['c']; 
$select="SELECT * FROM projects where id='$id'";
$qselect = mysql_query($select);
if(!mysql_num_rows($qselect)){
    header($_SERVER['HTTP_PROTOCOL']. '404 Entry Not Found');
    //print other info
}
else{
 //do usual code

}

答案 3 :(得分:0)

上述答案中没有人在MySQLI for Mysqli中回答它,如果在数据库中找不到记录,则使用下面的代码

<?php
ob_start();
include_once("includes/config.php")//mysqli config;
$adda=$_GET['a']; 
$cont=$_GET['c']; 
$select="SELECT * FROM projects where id='$id'";
$result = $conn->query($select) or die("Cannot write");
$numrows = $result->num_rows;
if( $numrows === 0 )
{
   ob_end_clean();
   header("HTTP/1.1 301 Moved Permanently");
   header( 'Location: http://examplesite.domain/errorpage' ) ;
   exit();
}
while ($row = mysql_fetch_array($qselect)) {

问候 www.psychocodes.in