亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將查詢錯誤轉換為MySQLi中的異常

將查詢錯誤轉換為MySQLi中的異常

將查詢錯誤轉換為MySQLi中的異常我試圖將MySQLi查詢錯誤轉換為異常,但不能-mysqli_sql_Exception只有當數據庫連接失敗時,才會引發。我用mysqli_report(MYSQLI_REPORT_STRICT)以及嵌入到自定義包裝類中的過程MySQLi函數。原守則:public function mysqlQuery($SQL) {     $this->Result = mysqli_query($this->DBlink, $SQL);     if($this->Result === false)         throw new MySQLiQueryException($SQL, mysqli_error($this->DBlink), mysqli_errno($this->DBlink));     return $this->Result;}問題:如果查詢失敗,就必須檢查mysqli_query()是否返回false,這是正常的沒有警告,也沒有拋出異常嗎?
查看完整描述

3 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

不久前,我設法解決了這件事。正如在其他答案,

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

是告訴mysqli拋出異常的正確方法。

但是,如果您正在自己的包裝中包裝mysqli函數(每個人都應該如此!)-這并沒有太大的區別。無論哪種方式,您都需要添加一段代碼來檢查成功與否。ifcatch。然而,電話數量將非常有限,因此不會造成太大的麻煩。

但是,所有這些“從MySQL”遷移到mysqli的人,由于所有的移動狂熱(但保留相同的方法,并在代碼中到處都有mysqli函數),將從這種設置中獲得巨大的好處(如果他們不遵循將每個函數調用包裝到try-catch中的常見習慣,這將是無用的)。


查看完整回答
反對 回復 2019-05-30
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

是否必須檢查mysqli_query()是否返回false?

否。

您應該能夠執行所需的操作,并指示mysqli驅動程序對sql錯誤拋出異常,但您需要啟用MYSQLI_REPORT_ERROR如果不是已經.。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)

mysqli_query()現在應該拋出錯誤的異常。您不需要檢查返回值是否失敗(這不會發生,因為會引發異常)。

public function mysqlQuery($SQL) {
    try {
        $this->Result = mysqli_query($this->DBlink, $SQL);
    } catch (mysqli_sql_exception $e) {
        throw new MySQLiQueryException($SQL, $e->getMessage(), $e->getCode());
    }
    return $this->Result;}

(注:我變了$this->SQL$SQL在重新拋出的異常中。)


查看完整回答
反對 回復 2019-05-30
  • 3 回答
  • 0 關注
  • 821 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號