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

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

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

我有一个显示各种元素的页面,即使它从数据库中调用的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)) { 

由于有时仅依赖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)) {