如何在php中捕获sql异常

如何在php中捕获sql异常,php,codeigniter,exception-handling,Php,Codeigniter,Exception Handling,我正在用php编写rest api,但是当api中插入一些空值时会抛出错误。它将sql查询显示在响应页面中,如何阻止它显示,在这种情况下最好的异常处理是什么。我对php有点陌生,因此非常感谢您的帮助。 下面是我为查询而编写的示例代码 $limit = " LIMIT ".$post_data['offset'].",".$post_data['limit']; $sql = "SELECT record_id from "; $shareResult= $this->d

我正在用php编写rest api,但是当api中插入一些空值时会抛出错误。它将sql查询显示在响应页面中,如何阻止它显示,在这种情况下最好的异常处理是什么。我对php有点陌生,因此非常感谢您的帮助。 下面是我为查询而编写的示例代码

  $limit = " LIMIT ".$post_data['offset'].",".$post_data['limit'];
    $sql = "SELECT record_id from ";
    $shareResult= $this->db->query($sql)->result_array();
    if(empty($shareResult[0]['record_id']) || $shareResult[0]['record_id'] != 0){
        $query="SELECT *";

        $result= $this->db->query($query);
        if($result->num_rows()>0){
            $res1=$this->db->query($qry)->result_array();
            $res[0]=$res1[0];
            $res[1]=$result->result_array();
            return $res;
        }
    }else if($shareResult[0]['record_id'] === 0){
        return false;
    }

如果您谈论的是Codeigniters默认调试选项,那么您应该仔细查看一下您的数据库配置

应该会出现这样的情况

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'database_name',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => TRUE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array()
);

查看db_debug并将其设置为false。

检查此帖子可能重复-。这可能会有帮助。请参考此-。基本上,您必须这样编写代码-尝试{/*放置代码*/}捕获异常$e{echo'catched Exception:',$e->getMessage,\n;}这取决于您在php中用于连接MySQL的MySQL api。每个问题都有几十个问题。我正在使用$this->db->querySelect*查询数据库。