Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-11-2008 11:43:02

onigoetz
Nouveau membre
Date d'inscription: 10-11-2008
Messages: 3

[Résolu] Inserer ou rechercher un "?"

Bien le bonjour tout le monde,

j'ai débuté récemment avec zend framework et je ne suis pas déçu des résultats obtenus.

mais j'ai un souci avec zend_db

j'ai créé un script automatisé qui importe des fichiers XML contenant des informations diverses.

ce script a très bien fonctionné sur 1784 fichiers

Mais il y en a un qui me donne du fil a retordre, il veut effectuer cette requête

Code:

2008-11-10T11:35:24+01:00 EMERG (0): Caught exception: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
2008-11-10T11:35:24+01:00 DEBUG (7): Mysql: Zend_Db_Profiler_Query::__set_state(array(
'_query' => 'SELECT `textes`.`id` FROM `textes` WHERE ( emission_id = 6536 ) AND ( i_contenu LIKE "Louise et Blanche, sa mère, tiennent \\"L\'Etape\\", café restaurant d\'un petit village de Savoie. \\"L\'Etape\\" n\'est pas seulement un bistrot, c\'est aussi une nouvelle famille pour toute une ribambelle d\'enfants brisés que les deux femmes accueillent depuis toujours. Louise, à l\'humour dévastateur, croit au pouvoir des mots pour soigner les douleurs. Face à elles, se dresse \\" Le Virage \\", tenu par Lucie Chevrier et ses filles. La rivalité éternelle entre les deux établissements va s\'exacerber pendant la grève des camionneurs qui bloque le village. Et surtout par l\'irruption de Pierre, leader des routiers, dans la vie de toutes ces femmes, dans la vie de cette petite agglomération... Un mélange de bruit et de tendresse qui s\'appellerait de l\'amour. Et si la vie était à eux ?" )',
'_queryType' => 32,
'_startedMicrotime' => 1226313324.0412,
'_endedMicrotime' => NULL,
'_boundParams' =>
array (
),
))

voilà la partie de mon débug concernée, a mon avis le souci se situe ici : "... Et si la vie était à eux ?"

il s'agirait juste du point d'interrogation qui est pris comme une variable alors que ce n'est pas le cas ...

donc si vous pouviez m'expliquer comment faire pour qu'il n'essaie pas de remplacer le point d'interrogation par une variable, je vous serai reconaissant.

Dernière modification par onigoetz (06-01-2009 09:42:35)

Hors ligne

 

#2 10-11-2008 14:11:20

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

Re: [Résolu] Inserer ou rechercher un "?"

il te faut utiliser quoteInto
A+

Hors ligne

 

#3 10-11-2008 14:21:44

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu] Inserer ou rechercher un "?"

Hello,

Le problème n'est pas l'insertion réelle des données mais l'interprétation du profileur. De là à dire, qu'il s'agisse d'un bug, il n'y a qu'un pas wink

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#4 10-11-2008 15:29:20

onigoetz
Nouveau membre
Date d'inscription: 10-11-2008
Messages: 3

Re: [Résolu] Inserer ou rechercher un "?"

Oulah, QuoteInto ... il m'a donné du fil a retorde lui aussi.

Dans ma base de données, il m'arrive a avoir a importer deux fois le même texte.
bien sûr, comme dans toute base de données j'évite les redondances.

donc avant d'insérer les données a nouveau, je recherche si elles existent.

au début j'ai simplement inséré ma chaine de caractère, vous vous en doutez, j'ai vite eu des soucis avec les ' et les " ...

j'ai ensuite découvert QuoteInto. mais là, si je relançais l'import du même fichier j'obtenais TOUS mes textes a double.

voilà le code que j'ai et qui fonctionne, sauf pour le cas que je vous ai décrit.

Code:

    function q_textes($params) {
        $source = array('"');
        $destin = array('\\"');
    
        $sql = 'SELECT `textes`.`id` FROM `textes` WHERE ( emission_id = '.$params['emission_id'].' ) AND ( i_contenu LIKE "'.str_replace($source, $destin, $params['contenu']).'" )';
        //$this->logg->debug("Mysql: " .$sql);
        
        $result = $this->bd->fetchRow($sql);

        if($result != false){
            $id = $result->id;
        } else {
            $data = array(
                'emission_id' => $params['emission_id'],
                'tytexte_id' => $params["tytexte_id"],
                'soustitre' => $params["soustitre"],
                'contenu' => $params['contenu'],
                'i_soustitre' => $params["soustitre"],
                'i_contenu' => $params['contenu']
            );
            
            $this->bd->insert('textes', $data);
            $id = $this->bd->lastInsertId();
        }
        
        return $id;
    }

Hors ligne

 

#5 06-01-2009 09:44:09

onigoetz
Nouveau membre
Date d'inscription: 10-11-2008
Messages: 3

Re: [Résolu] Inserer ou rechercher un "?"

Et voilà.

Finalement c'est bien utile de lire la documentation ^^

J'ai utilisé QuoteInto, simplement cette fois je l'ai utilisé juste.

tout fonctionne dorénavant. merci

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