看板 Programming 關於我們 聯絡資訊
不好意思,不確定是PO在這裡還是PHP版或DB版,若PO錯請版主通知小弟轉版,謝謝您 因為小弟工作上的關係,需要維公司的網站,最近在進行平台移轉時,後台在做寫入DB時 會出現錯誤,錯誤訊息如下: <b>Fatal error</b>: Uncaught exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli statement execute error : No data supplied for parameters in prepared statement' in /home/oringnet/public_html/website/library/Zend/Db/Statement/Mysqli.php:218 Stack trace: #0 /home/oringnet/public_html/website/library/Zend/Db/Statement.php(284): Zend_Db_Statement_Mysqli-&gt;_execute(Array) #1 /home/oringnet/public_html/website/library/Zend/Db/Adapter/Abstract.php(436): Zend_Db_Statement-&gt;execute(Array) #2 /home/oringnet/public_html/website/library/Zend/Db/Adapter/Abstract.php(566): Zend_Db_Adapter_Abstract-&gt;query('UPDATE `product...', Array) #3 /home/oringnet/public_html/website/library/Zend/Db/Table/Abstract.php(962): Zend_Db_Adapter_Abstract-&gt;update('product_switch_...', Array, 'sn = 139') #4 /home/oringnet/public_html/website/library/Jasmin/Model/Abstract.php(903): Zend_Db_Table_Abstract-&gt;update(Array, 'sn = 139') #5 /home/oringnet/public_html/website/application/workbench/controllers/ProductController.php(352): Jasmin_Model_Abstrac in <b>/home/oringnet/public_html/website/library/Zend/Db/Statement/Mysqli.php</b> on line <b>218</b><br /> 因為小弟是PHP的新手,再翻遍估狗搜來的相關網頁皆沒看到相關的解決辦法,故只好上 來相詢請教, 已經查詢過出錯誤的程式碼 Zend/Db/Statement/Mysqli.php 218行如下 throw new Zend_Db_Statement_Mysqli_Exception("Mysqli statement execute error : " . $this->_stmt->error); 而整段function則為: public function _execute(array $params = null) { if (!$this->_stmt) { return false; } // if no params were given as an argument to execute(), // then default to the _bindParam array if ($params === null) { $params = $this->_bindParam; } // send $params as input parameters to the statement if ($params) { array_unshift($params, str_repeat('s', count($params))); call_user_func_array( array($this->_stmt, 'bind_param'), $params ); } // execute the statement //var_dump($this->_stmt); $retval = $this->_stmt->execute(); if ($retval === false) { /** * @see Zend_Db_Statement_Mysqli_Exception */ require_once 'Zend/Db/Statement/Mysqli/Exception.php'; throw new Zend_Db_Statement_Mysqli_Exception("Mysqli statement execute error : " . $this->_stmt->error); } // retain metadata if ($this->_meta === null) { $this->_meta = $this->_stmt->result_metadata(); if ($this->_stmt->errno) { /** * @see Zend_Db_Statement_Mysqli_Exception */ require_once 'Zend/Db/Statement/Mysqli/Exception.php'; throw new Zend_Db_Statement_Mysqli_Exception("Mysqli statement metadata error: " . $this->_stmt->error); } } // statements that have no result set do not return metadata if ($this->_meta !== false) { // get the column names that will result $this->_keys = array(); foreach ($this->_meta->fetch_fields() as $col) { $this->_keys[] = $this->_adapter->foldCase($col->name); } // set up a binding space for result variables $this->_values = array_fill(0, count($this->_keys), null); // set up references to the result binding space. // just passing $this->_values in the call_user_func_array() // below won't work, you need references. $refs = array(); foreach ($this->_values as $i => &$f) { $refs[$i] = &$f; } $this->_stmt->store_result(); // bind to the result variables call_user_func_array( array($this->_stmt, 'bind_result'), $this->_values ); } return $retval; } 有趣的是,select都沒問題,顯示正常,但在做新增及修改時的儲存都會出現相同的錯誤 訊息, 不過insert時Exception會抓到錯誤而跳出對話框訊息,做update時則會直接出現開頭 的錯誤訊息頁面。 以小弟的皮毛功力實在無法解決,還請前輩們可以幫下小弟,在此先說聲謝謝了。 平台伺服器資訊 Apache版本2.4.10 MySQL版本5.5.37-cll PHP版本5.3.29 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.43.168 ※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1414398823.A.078.html
MOONRAKER: 同學你犯了framework user最基本的錯誤 122.116.43.189 10/27 21:52
MOONRAKER: 不要幫framework的code除錯 122.116.43.189 10/27 21:52
MOONRAKER: 人家千錘百鍊的code,有錯絕難由你發現 122.116.43.189 10/27 21:53
MOONRAKER: 一開始就跟你說 no data supplied for 122.116.43.189 10/27 21:54
MOONRAKER: parameters in prepared statement了 122.116.43.189 10/27 21:54
MOONRAKER: 你就老老實實去檢查準備要寫入db的那一 122.116.43.189 10/27 21:56
MOONRAKER: 包物件或陣列裡面有什麼東東 122.116.43.189 10/27 21:56
MOONRAKER: 努力把它找到,你就可以累積經驗值。 122.116.43.189 10/27 21:58
carylorrk: 都是 they 的錯 1.34.244.41 10/28 02:30
nightsmile: 感謝M大,所以我應該是從呼叫這個 122.116.43.168 10/28 08:49
nightsmile: 函數的客製程式ProductController.php 122.116.43.168 10/28 08:50
nightsmile: 開始除錯是嗎? 122.116.43.168 10/28 08:51
nightsmile: 可是有疑問的是,整套系統在原來的平 122.116.43.168 10/28 08:56
nightsmile: 台上執行都正常,但換個地方就水土不 122.116.43.168 10/28 08:57
nightsmile: 服...囧,而小弟完全只會hello world. 122.116.43.168 10/28 08:59
MOONRAKER: 或許是Zend framework的版本問題 122.116.43.189 10/28 13:06
MOONRAKER: 這的確很難查 122.116.43.189 10/28 13:06
nightsmile: 感謝M大給的方向,今日冒著網站掛掉被 122.116.43.168 10/28 15:10
nightsmile: 罵的風險,將framework升級,結果問題 122.116.43.168 10/28 15:10
nightsmile: 解決了~再次感謝M大~ 122.116.43.168 10/28 15:12
MOONRAKER: 哈哈有解決就好 122.116.43.189 10/28 20:20
MOONRAKER: 沒想到問題最後真的來自framework 122.116.43.189 10/28 20:20
MOONRAKER: 這對我也是個教訓 122.116.43.189 10/28 20:20