PHP当数据库中不存在记录时该怎么做

Cyb*_*kie 0 php mysql codeigniter http-status-code-404

我正在查询数据库中是否存在与url段中传递的id匹配的单个记录www.site.com/post/24.

假设帖子24不存在.什么是安全和seo兼容的方式来处理未找到的数据库请求?

以下是使用Codeigniter模型的当前解决方案:

    function read_post($post_id) //argument is the value of the url segment
    {
        $user_id = $this->tank_auth->get_user_id();

        $this->db->where('user_id', $user_id);
        $this->db->where('post_id', $post_id);
        $this->db->limit(1);
        $query = $this->db->get('posts');

        //check if record exists
        if ($query->num_rows() > 0) //row is returned
        {
            return $query->row(); //passed to controller and view
        }
        else
        {
            show_404(); //generate 404 message
            return FALSE; //------------------------or exit()?
        }
    }
Run Code Online (Sandbox Code Playgroud)

请分享您自己最好的方法/意见.

Emi*_*röm 6

显示404页面(使用404 HTTP状态代码).这是正确的做法.否则你只会假装你有无限多页没有内容.

在404页面上简要描述内容不再存在.然后,您可以在网页上添加指向其他热门内容的链接.为了用户的利益,我们鼓励他们尝试将他们 404页面转发有趣的内容,但是使用链接执行此操作,以便用户可以阅读404消息并选择下一步操作.

如果您有包含单词的有意义的URL,您也可以提取单词并在数据库中进行某种搜索.在404页面上列出搜索结果,在"您可能感兴趣..."之类的标题下.如果您正在销售产品或服务,请不要犹豫,将404页面变成一个畅销的产品!

我坚信最好的SEO是最适合您的访客的SEO.这一切都是为了将它们保存在您的网站上,而不是吓跑它们.使您的网站尽可能方便用户,并轻松找到所有有趣的内容.我上面的回答直接源于这种信念.根据标准(在这种情况下为HTTP标准)做正确的事情,同时尝试用良好的内容和服务来吸引用户.对于您的公司来说,这对销售来说当然也是最好的.