[php] Comment imprimer une requête sql exacte dans le framework zend?


Answers

de> = 2.1.4

echo $select->getSqlString()
Question

J'ai le morceau de code suivant que j'ai pris du modèle,

    ...
                  $select = $this->_db->select()
                    ->from($this->_name)
                    ->where('shipping=?',$type)
                    ->where('customer_id=?',$userid);
                 echo  $select; exit; // which gives exact mysql query.
            .....

Quand j'utilise une requête de mise à jour dans zend like,

$up_value = array('billing'=> '0');
$this->update($up_value,'customer_id ='.$userid.' and address_id <> '.$data['address_Id']);      

Ici, je veux connaître la requête mysql exacte. Est-il possible d'imprimer la requête mysql dans zend? bon conseil




Je l'ai fait de cette façon

$sql = new Sql($this->adapter);
        $select = $sql->select();
        $select->from('mock_paper');
        $select->columns(array(
            'is_section'
        ));
        $select->where(array('exam_id = ?' => $exam_id,'level_id = ?' => $level_id))->limit(1);



        $sqlstring = $sql->buildSqlString($select);
        echo $sqlstring;
        die();



$db->getProfiler()->setEnabled(true);

// your code    
$this->update('table', $data, $where);    
Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());    
Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());    
$db->getProfiler()->setEnabled(false);



Utilisez ceci:-

echo $select->query();

ou

Zend_Debug::dump($select->query();



vous pouvez imprimer ..

print_r($select->assemble());



Vous pouvez utiliser Zend_Debug::Dump($select->assemble()); pour obtenir la requête SQL.

Ou vous pouvez activer le profileur Zend DB FirePHP qui vous obtiendra toutes les requêtes dans un format soigné dans Firebug (même les instructions UPDATE).

EDIT : Profilage avec FirePHP fonctionne également en FF6.0 + (pas seulement en FF3.0 comme suggéré dans le lien)




Links