2013-01-08 36 views
0

我正在使用MDB2進行準備語句。我使用的是基於域名的例子從PEAR MDB2網站爲指導,這是我到目前爲止有:兩個準備好的語句在一個頁面上 - 第一個工作,第二個失敗

 $q = ' 
      UPDATE 
       abc_news 
      SET 
       newstitle  = :newstitle, 
       categoryid  = :categoryid, 
       facilityid  = :facilityid, 
       user_id_mod  = :user_id_mod, 
       user_id_add  = :user_id_add, 
       display   = :display, 
       locked   = :locked, 
       datemodified = NOW() 
      WHERE 
       newsid   = :newsid 
     '; 

     $types = array(
      'text', 
      'integer', 
      'integer', 
      'integer', 
      'integer', 
      'integer', 
      'integer', 
      'integer', 
     ); 

     $res = $mdb2_dbx->prepare($q, $types,MDB2_PREPARE_MANIP); 

     $data = array(
      'newstitle'  => $n_newstitle, 
      'categoryid' => $n_categoryid, 
      'facilityid' => $n_facilityid, 
      'display'  => 1, 
      'locked'  => 1, 
      'user_id_add' => $n_user_id_add, 
      'user_id_mod' => $n_user_id_mod, 
      'newsid'  => $newsid, 
     ); 
     $affected_rows = $statment->execute($data); 
     if (PEAR::isError($res)) 
      die('error'); 
     $statement->free(); 


     $q = ' 
      UPDATE 
       abc_news_text 
      SET 
       newstext  = :newstext 
      WHERE 
       newsid   = :newsid 
     '; 

     $types = array(
      'text', 
      'integer', 
     ); 

     $statment = $mdb2_dbx->prepare($q, $types,MDB2_PREPARE_MANIP); 

     $data = array(
      'newstext'  => $n_newstext, 
      'newsid'  => $newsid, 
     ); 
     $affected_rows = $statment->execute($data); 
     if (PEAR::isError($res)) 
      die('error');     

     $statement->free(); 

第一查詢工作 - 包含自動增量$ NewSID的打印屏幕(其隨着每次新提交而增加)。

正下方,我得到這個錯誤:

Fatal error: Call to undefined method MDB2_Error::execute() in news.php on line 160 

線160是第二$affected_rows = $statment->execute($data);線。

我正在釋放該語句,並且兩個語句的語法看起來都是相同的。

我在這裏做錯了什麼?

回答

1

這是因爲您正在獲取MDB2_ERROR對象而不是語句對象。你的prepare()顯然不起作用,你根本不檢查prepare()的成功與否。

此外,我不確定您的第一個工作是如何工作的,因爲您將結果設置爲$res變量而不是$statment。我也注意到你的變量名$statment沒有e(不知道這是否是一個錯字)。

+0

在我的帖子中輸入-o代碼在兩個地方都有$語句。我添加了錯誤檢查,並得到這個: '可捕捉的致命錯誤:MDB2_BufferedResult_mysqli類的對象無法轉換爲字符串' –

+0

您是否可以更新您的問題中的代碼以反映更改。從最初的代碼示例看來,您似乎在執行'execute()'之後錯誤地混合了'$ res'和'$ statement'並在'prepare()'上檢查錯誤,這顯然是無序操作。 –

+0

沒有必要 - 我在發佈之前更改了一堆變量,因爲我不想在公共網站上列出我的確切代碼。問題出在我的查詢中 - 我在...之前有一個尾隨逗號。WHERE blah =:blah bit。刪除了逗號,事情正在出色地工作。謝謝。 –

相關問題