我认为我在上一个问题中没有充分解释自己。
我有一个显示各种元素的页面,即使它从数据库调用的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)) {
答案 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)) {