Php 用文件替换错误消息

Php 用文件替换错误消息,php,foreach,Php,Foreach,我有一段代码: private function grabCurrentUser() { $this->id = parent::secure($_GET['cid']); $params = array( ':user_id' => $this->id ); $stmt = parent::query("SELECT * FROM users WHERE user_id = :user_id;", $params); if( $stm

我有一段代码:

private function grabCurrentUser() {

    $this->id = parent::secure($_GET['cid']);

    $params = array( ':user_id' => $this->id );
    $stmt   = parent::query("SELECT * FROM users WHERE user_id = :user_id;", $params);

    if( $stmt->rowCount() < 1 ) parent::displayMessage("<div class='alert alert-error'>"._('No such user!')."</div>");

    foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $field => $value)
        $this->options[$field] = $value;

}
那么,如何将它从显示错误消息替换为仅包含index.php

我试过这个:

private function grabCurrentUser() {

    $this->id = parent::secure($_GET['cid']);

    $params = array( ':user_id' => $this->id );
    $stmt   = parent::query("SELECT * FROM users WHERE user_id = :user_id;", $params);

    if( $stmt->rowCount() < 1 ) include_once(cINC . 'index.php');

    foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $field => $value)
        $this->options[$field] = $value;

}

提前感谢

不要使用include,要想做什么,请使用重定向,如:

header(index.php);

是的,这样一来,重定向on错误是一件非常糟糕的事情。为什么不先将错误捕获出来,了解代码中发生了什么,然后以某种方式编写代码,使其在一开始就不会生成错误?

当用户id未知时,您必须尝试捕获错误,以便执行以下操作

if( $stmt->rowCount() < 1 ) 
{
include_once(cINC . 'index.php');
exit();
}
else {
foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $field => $value)
$this->options[$field] = $value;
}
if($stmt->rowCount()<1)
{
包括_once(cINC.'index.php');
退出();
}
否则{
foreach($stmt->fetch(PDO::fetch_ASSOC)作为$field=>$value)
$this->options[$field]=$value;
}

我猜
parent::displayMessage
会终止当前的脚本执行,因此下面的
foreach
不会使用无效参数执行。您的
include\u once
不会终止脚本,并且会运行
foreach


从函数返回
die()
,或者执行其他操作来停止
foreach
的运行。

您在应用程序逻辑中有错误,如果您没有任何记录,并且希望包含一些文件,那么您就不会遍历空记录列表

private function grabCurrentUser() {

    $this->id = parent::secure($_GET['cid']);

    $params = array( ':user_id' => $this->id );
    $stmt   = parent::query("SELECT * FROM users WHERE user_id = :user_id;", $params);

    if( $stmt->rowCount() < 1 ){
        include_once(cINC . 'index.php');
    } else {
        foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $field => $value)
            $this->options[$field] = $value;
    }
}
private函数grabCurrentUser(){
$this->id=parent::secure($\u GET['cid']);
$params=array(':user_id'=>$this->id);
$stmt=parent::query(“从用户中选择*,其中用户id=:用户id;”,$params);
如果($stmt->rowCount()<1){
包括_once(cINC.'index.php');
}否则{
foreach($stmt->fetch(PDO::fetch_ASSOC)作为$field=>$value)
$this->options[$field]=$value;
}
}
header(index.php);
if( $stmt->rowCount() < 1 ) 
{
include_once(cINC . 'index.php');
exit();
}
else {
foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $field => $value)
$this->options[$field] = $value;
}
private function grabCurrentUser() {

    $this->id = parent::secure($_GET['cid']);

    $params = array( ':user_id' => $this->id );
    $stmt   = parent::query("SELECT * FROM users WHERE user_id = :user_id;", $params);

    if( $stmt->rowCount() < 1 ){
        include_once(cINC . 'index.php');
    } else {
        foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $field => $value)
            $this->options[$field] = $value;
    }
}