Mysql 404如果未找到记录-如何检查记录是否存在?
我认为我在上一个问题中没有充分解释我自己 我有一个显示各种元素的页面,即使它从数据库中调用的id不存在或已被删除(这会引发各种难看的错误,搜索引擎会继续列出不存在的页面) 如果$id不存在,是否可以修改下面显示的页面代码的第一部分以发送404(或者至少发送到具有404头的projecterror.php)?非常感谢Mysql 404如果未找到记录-如何检查记录是否存在?,mysql,validation,http-status-code-404,Mysql,Validation,Http Status Code 404,我认为我在上一个问题中没有充分解释我自己 我有一个显示各种元素的页面,即使它从数据库中调用的id不存在或已被删除(这会引发各种难看的错误,搜索引擎会继续列出不存在的页面) 如果$id不存在,是否可以修改下面显示的页面代码的第一部分以发送404(或者至少发送到具有404头的projecterror.php)?非常感谢 <?php include_once("includes/linkmysql.php"); $adda=$_GET['a']; $cont=$_GET['c']; $sel
<?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)) {
由于有时仅依赖HTTP错误代码可能有点太模糊,因此我建议您在常规HTTP状态代码之外,在XML/JSON响应消息中包含该错误。
通过这种方式,您可以提供更好的日志记录,并且由于错误在消息中有详细说明,因此将大大缩短调试时间/为您提供更清楚地显示错误来源的机会
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
}
include_once(“includes/linkmysql.php”);
$adda=$\u GET['a'];
$cont=$_GET['c'];
$select=“从id为“$id”的项目中选择*;
$qselect=mysql\u查询($select);
如果(!mysql_num_rows($qselect)){
标头($_服务器['HTTP_协议'.'404未找到条目');
//打印其他信息
}
否则{
//执行常规代码吗
}
以上答案中没有人在MySQLI中回答过,如果在数据库中找不到记录,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)) {
如果您想澄清之前的问题,请随意编辑。那里已经有人试图帮助你。好的,我没有意识到编辑是可能的,谢谢你的提醒。原始帖子已经编辑。此解决方案会导致正确显示页面的有效条目,但不存在的页面会显示以下错误:警告:无法修改标题信息-已由发送的标题(输出开始于/home/website/public_html/header1.php:14)在/home/website/public_html/header1.php的第22行
警告:无法修改标题信息-标题已由发送(输出开始于/home/website/public_html/header1.php:14)在第23行的/home/website/public_html/header1.php中
第22行和第23行是上面示例中的两个标题行。这需要在代码中位于更高的位置。标题需要在发送任何其他信息之前发送,例如原始文本或回音。上面的代码位于header.php页面的顶部,这是第一个被调用以显示的内容。我无法解释你把这个弄出来!
<?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)) {