台灣最大程式設計社群網站
線上人數
1797
 
會員總數:245912
討論主題:189503
歡迎您免費加入會員
討論區列表 >> PHP >> No data supplied for parameters in prepared statem
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
No data supplied for parameters in prepared statem
價值 : 100 QP  點閱數:1111 回應數:5
樓主

牡羊雙魚
門外漢
0 1
33 3
發送站內信

各位前輩好
因為小弟工作上的關係,需要維公司的網站,最近在進行平台移轉時,在做寫入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

搜尋相關Tags的文章: [ PHP ] , [ Mysqli ] , [ No data supplied for parameters in prep ] ,
本篇文章發表於2014-10-27 16:12
1樓
作者回應

牡羊雙魚
檢舉此回應
不好意思,剛剛看到新手發文要注意的方,發現自己犯了錯誤,故將有錯誤的程式碼稍微節錄出來好辨識

本篇文章回覆於2014-10-27 16:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
其實在錯誤訊息堶探N已經告知你的問題在哪了。
Uncaught exception = 未知的擴展。

也就是說你的php設定內,缺少了某些擴展應用。

你這因該是某個物件庫模組。你可能要往那方面去找問題。
本篇文章回覆於2014-10-28 07:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

牡羊雙魚
檢舉此回應
感謝版大,不知需要調整設定的是朝htaccess檔著手還是php.ini檔呢?
本篇文章回覆於2014-10-28 09:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

LaLa
檢舉此回應
看這一個檔案是否存在..
Zend/Db/Statement/Mysqli/Exception.php
本篇文章回覆於2014-10-28 10:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

牡羊雙魚
檢舉此回應
謝謝版大及L大的回應,小弟試著將framework的版本升級後就解決了,實在瞎到不敢上來回報說......
本篇文章回覆於2014-10-28 15:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.