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

為了賬號安全,請及時綁定郵箱和手機立即綁定

$PDOStatement的問題

self::execcute中用self::free釋放了$PDOStatement后就直接執行了exec()。如果連接沒錯,sql語句出錯了,self::haveErrorThrowException就會根據$PDOStatement是否為空執行不同的操作。但是$PDOStatement不是被free清理后就一直為空嗎?為什么會判斷不是空的?

正在回答

2 回答

主要是haveErrorThrowException中的這句:

?$obj=empty($this->PDOStatement)?self::$link:$this->PDOStatement;
?$arrError=$obj->errorInfo();

因為pdo類(self::$link)有自己的errorInfo方法,同樣PDOStatement
類同樣有重名的errorInfo方法,所以這里必須現清空下,否則的話很有可能執行的是PDOStatement中的errorInfo方法.

0 回復 有任何疑惑可以回復我~

百度找不到確切的答案,只是說PDOStatement是存儲一條預處理語句。但我的猜想是,PDOStatement除了可以存儲預處理,還能存儲exec返回的結果集。這樣語句就能理解了

0 回復 有任何疑惑可以回復我~
#1

堅持MyDream

如果exec();執行出問題。那么,因為下面這個語句 (370行) $obj=empty(self::$PDOStatement)?self::$link:self::$PDOStatement; 因為這語句,$obj=$link; 你可以試試,這時候,當exec()執行成功時,$arrErr=$link->errorInfo();獲得的$arrErr[0]的值應該是00000 失敗時,值就不是00000 也就是說,exec()的錯誤信息,你可以通過$link->errorInfo()提取。 ($link->exec($sql))
2016-12-28 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

$PDOStatement的問題

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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