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);
線。
我正在釋放該語句,並且兩個語句的語法看起來都是相同的。
我在這裏做錯了什麼?
在我的帖子中輸入-o代碼在兩個地方都有$語句。我添加了錯誤檢查,並得到這個: '可捕捉的致命錯誤:MDB2_BufferedResult_mysqli類的對象無法轉換爲字符串' –
您是否可以更新您的問題中的代碼以反映更改。從最初的代碼示例看來,您似乎在執行'execute()'之後錯誤地混合了'$ res'和'$ statement'並在'prepare()'上檢查錯誤,這顯然是無序操作。 –
沒有必要 - 我在發佈之前更改了一堆變量,因爲我不想在公共網站上列出我的確切代碼。問題出在我的查詢中 - 我在...之前有一個尾隨逗號。WHERE blah =:blah bit。刪除了逗號,事情正在出色地工作。謝謝。 –