Je voulais savoir si les déclarations préparées peuvent être utilisées de la manière suivante:Est-ce qu'une instruction préparée dans MySQL peut contenir PREPARE et 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);
}
Je reçois effectivement une erreur:
ERRNO: 256 TEXT: SQLSTATE[HY000]: General error
peut-elle aider quelqu'un s'il vous plaît?
D'où viennent les catégories 'categoryId',' firstItem' et 'items_per_page'? Sont-ils supposés être des variables PHP? –
Y a-t-il une raison particulière pour laquelle vous utilisez l'interface sql pour les instructions préparées au lieu de certaines API qui permettent l'utilisation du protocole binaire comme par ex. mysqli ou pdo? – VolkerK
Eh bien Im juste un débutant. Im juste essayer des choses par moi-même et apprendre en même temps. Je ne sais rien à propos de mysqli .. – chupinette