MySQL bir hazır deyim hazırlamak ve yürütme içerebilir?

3 Cevap php

Ben hazırlanan tablolar aşağıdaki şekilde kullanılabilir bilmek istedim:

 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);
        }

Ben aslında bir hata alıyorum:

 ERRNO: 256 TEXT: SQLSTATE[HY000]: General error

Kimse lütfen yardımcı olabilir misiniz?

3 Cevap

Genellikle, hazırlamak ve yürütme ifadeleri DBMS `sunucu tarafı 'normal görmüyor' istemci tarafının işlemlerdir. Bu hızlı sert ve kural olarak kullanılan; şeyler şimdi saklanan prosedürler ve dinamik SQL izin gibi ile bulanık. Sonuç olarak, ne may MySQL mümkün çalışıyorsanız, ama (en azından) şüpheli bakar.

Ancak, sorunlar göz önüne alındığında, ben iki ayrı operasyona SQL ikinci öbek bölme kadar - tavsiye ve HAZIRLIYOR cümle ve yürütmek cümle atlarsanız. Siz (aslında, bölünmüş SQL yürütmek faz) bölünmüş SQL yürütür açıklamaya parametreleri geçirmek gerekir.

"Diamondsea at Brian" den PHP Manual, kullanıcı yorumlarında:

Sqlstate [HY000]: Genel hata: diğer tamponsuz sorgular aktif iken 2014 sorguları yürütmek olamaz. ...

Aynı kod, diğer sunucular üzerinde ince koştu sonra biz yeni bir sunucuda bu hatayı alıyorum niçin izini çalışırken saat geçirdikten sonra, biz sorun bizim web sunucu üzerinde çalışan eski bir MySQL client kütüphane bulundu ve en son sürümü MySQL server, veritabanı sunucusunun kutusu üzerinde çalışan.

Yükseltildi Mevcut revizyonda için web sunucusunda MySQL istemci ve sorun ortadan kalktı.

Sen stmt_name hazırlamak ama stmt yürütmek - bu sadece bir yazım hatası mı?

Ne categoryId, firstName ve items_per_page hakkında - nerede bu geliyor?