Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-11-2008 18:40:51

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

[Résolu]can bind a LONG value only for insert into a LONG column

Salut à tous
j'ai un pb que je ne sais pas résoudre.

Code:

UPDATE V_PAGE_ACCUEIL SET PAGE_DATA = :value WHERE PAGE_LANG = :lang

requête on ne peut plus simple
mais voilà mon PAGE_DATA est un CLOB et avec un prépare impossible de lui dire que c'est un large object

Code:

    public function updateHome($lang, $value) {
        $return = new stdClass();
        $sql = 'UPDATE V_PAGE_ACCUEIL SET PAGE_DATA = :value WHERE PAGE_LANG = :lang';
        $this->_db->beginTransaction();
        try {
            $statement = $this->_db->prepare($sql);
            $statement->execute(array('lang' => $lang, 'value' => $value));
            $this->_db->commit();
            $return->success = true;
        } catch (Exception $e) {
            $this->_db->rollBack();
            $return->error = $e->getMessage();
            $return->msg = $sql;
            $return->success = false;
        }
        return $return;
    }

je suis sous pdo_oci

merci de votre aide
A+JYT

Dernière modification par sekaijin (12-04-2010 13:28:29)

Hors ligne

 

#2 27-11-2008 21:57:04

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Résolu]can bind a LONG value only for insert into a LONG column

Salut à tous
je me réponds à moi même
il faut donc passer un paramètre au binding

Code:

    public function updateHome($lang, $value) {
        $return = new stdClass();
        $sql = 'UPDATE V_PAGE_ACCUEIL SET PAGE_DATA = :value WHERE PAGE_LANG = :lang';
        $this->_db->beginTransaction();
        try {
            $statement = $this->_db->prepare($sql);
            $statement->bindParam('value', $value, PDO::PARAM_LOB);
            $statement->execute(array('lang' => $lang));
            $this->_db->commit();
            $return->success = true;
        } catch (Exception $e) {
            $this->_db->rollBack();
            $return->error = $e->getMessage();
            $return->msg = $sql;
            $return->success = false;
        }
        return $return;
    }

je suis sous pdo_oci

cela semble fonctionner
mais j'ai encore un pb avec oracle
si mon champ est un CLOB (Char Large Object) J'ai un message can't convert BLOB to CLOB
donc impossible d'insérer un Binary LOB dans un CLOB je n'ai pas trouvé comment lui dire d'insérer un CLOB

Si mon champ en base est un BLOB alors il n'écrit rien


merci de votre aide
A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages