第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

將查詢錯(cuò)誤轉(zhuǎn)換為MySQLi中的異常

將查詢錯(cuò)誤轉(zhuǎn)換為MySQLi中的異常

將查詢錯(cuò)誤轉(zhuǎn)換為MySQLi中的異常我試圖將MySQLi查詢錯(cuò)誤轉(zhuǎn)換為異常,但不能-mysqli_sql_Exception只有當(dāng)數(shù)據(jù)庫連接失敗時(shí),才會引發(fā)。我用mysqli_report(MYSQLI_REPORT_STRICT)以及嵌入到自定義包裝類中的過程MySQLi函數(shù)。原守則: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貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

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

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

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

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


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

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

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

否。

您應(yīng)該能夠執(zhí)行所需的操作,并指示mysqli驅(qū)動程序?qū)ql錯(cuò)誤拋出異常,但您需要啟用MYSQLI_REPORT_ERROR如果不是已經(jīng).。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)

mysqli_query()現(xiàn)在應(yīng)該拋出錯(cuò)誤的異常。您不需要檢查返回值是否失敗(這不會發(fā)生,因?yàn)闀l(fā)異常)。

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在重新拋出的異常中。)


查看完整回答
反對 回復(fù) 2019-05-30
  • 3 回答
  • 0 關(guān)注
  • 832 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號