我想知道如果準備語句可以通過以下方式來使用:MySQL中的預處理語句是否可以包含PREPARE和EXECUTE?
public static function GetCategoryItems($categoryId,$pageNum, &$rnum_pages)
{
$sql = 'SELECT DISTINCT COUNT(*) AS items_count
FROM item I
JOIN sub_category SC
ON I.sub_category_id = SC.sub_category_id
JOIN category C
ON C.category_id = SC.category_id
WHERE (I.location = 2 OR I.location = 3)
AND C.category_id =' . (int)$categoryId ;
$params = array (':category_id'=>$categoryId);
$rnum_pages = Catalog::CalculatePages($sql,$params);
$first_item = ($pageNum - 1) * ITEMS_PER_PAGE;
$sql =
"PREPARE stmt_name FROM
'SELECT I.item_id, I.name , I.price, I.discounted_price, I.thumbnail_photo
FROM item I
JOIN sub_category SC
ON I.sub_category_id = SC.sub_category_id
JOIN category C
ON C.category_id = SC.category_id
WHERE C.category_id = ?
LIMIT ?,? ' ;
SET @p1 = categoryId;
SET @p2 = firstItem;
SET @p3 = items_per_page;
EXECUTE stmt_name USING @p1,@p2,@p3; "
return DatabaseConnection::GetAll($sql,$params);
}
其實我得到一個錯誤:
ERRNO: 256 TEXT: SQLSTATE[HY000]: General error
誰能幫助嗎?
其中'categoryId','firstItem'和'items_per_page'來自哪裏?那些應該是PHP變量? – 2010-01-11 15:33:51
是否有一個特殊的原因,您爲什麼使用sql接口來準備語句,而不是某些允許使用二進制協議(例如, mysqli或pdo? – VolkerK 2010-01-11 15:57:04
嗯我只是一個初學者。我只是自己嘗試和學習。我不知道什麼關於mysqli .. – chupinette 2010-01-11 16:14:47