44 votos

Cómo imprimir exacta de la consulta sql en zend framework ?

Tengo el siguiente trozo de código que he tomado de modelo,

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

Cuando yo uso consulta de actualización en zend como ,

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

Aquí quiero saber exactamente la consulta de mysql. Es allí cualquier manera posible para la impresión de la consulta de mysql en zend ? amablemente consejo

81voto

Mark Basmayor Puntos 1371

Seleccione los objetos tienen un __toString() en el método de Zend Framework.

Desde el Zend Framework manual:

$select = $db->select()
             ->from('products');

$sql = $select->__toString();
echo "$sql\n";

// The output is the string:
//   SELECT * FROM "products"

Una solución alternativa sería el uso de la Zend_Db_Profiler. es decir,

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

// your code
$this->update($up_value,'customer_id ='.$userid.' and address_id <> '.$data['address_Id']); 

Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());
Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());
$db->getProfiler()->setEnabled(false);

http://framework.zend.com/manual/en/zend.db.select.html

13voto

Rajan Rawal Puntos 1569

He atravesado cientos de páginas, google mucho, pero no he encontrado ninguna solución exacta. Finalmente esto funcionó para mí. Independientemente de donde usted está en cualquiera de los controladores o modelo. Este código funcionó para mí, en todos los lugares. Sólo tiene que utilizar esta

//Before executing your query
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$db->getProfiler()->setEnabled(true);
$profiler = $db->getProfiler();

// Execute your any of database query here like select, update, insert
//The code below must be after query execution
$query  = $profiler->getLastQueryProfile();
$params = $query->getQueryParams();
$querystr  = $query->getQuery();

foreach ($params as $par) {
    $querystr = preg_replace('/\\?/', "'" . $par . "'", $querystr, 1);
}
echo $querystr;

Por último, esta cosa funcionó para mí.

13voto

Whisher Puntos 1853

de >= 2.1.4

echo $select->getSqlString()

6voto

Christian P Puntos 4303

Usted puede utilizar Zend_Debug::Dump($select->assemble()); para obtener la consulta SQL.

O usted puede activar Zend DB FirePHP analizador que conseguirá que todas las consultas en una casa de formato en Firebug (incluso de ACTUALIZACIÓN de estados de cuenta).

EDITAR: Perfiles con FirePHP también trabaja también en FF6.0+ (no sólo en FF3.0 como se sugiere en el enlace)

2voto

AvMishra Puntos 185

usted puede imprimir..

print_r($select->assemble());

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X