Foros del Web » Programando para Internet » PHP » Zend »

Select y Update con Zend_Db_Table_Abstract

Estas en el tema de Select y Update con Zend_Db_Table_Abstract en el foro de Zend en Foros del Web. Hola a tod@s; Tengo una clase donde llamo a una sencilla función para efectuar un select (los datos en la tabla están inicializados y los ...
  #1 (permalink)  
Antiguo 27/10/2011, 04:34
 
Fecha de Ingreso: octubre-2011
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Select y Update con Zend_Db_Table_Abstract

Hola a tod@s;

Tengo una clase donde llamo a una sencilla función para efectuar un select (los datos en la tabla están inicializados y los datos que llegan a la función son correctos.

El select que quiero hacer es :

Código PHP:
$sql "SELECT * FROM  `laser` WHERE  `numero` =? AND  `jugador` ='?' LIMIT 0 , 30"
El código de la clase es:

Código PHP:
class Application_Model_Laser extends Zend_Db_Table_Abstract
{
      protected 
$_name 'laser';
        
      public function 
getLaserNivel($numero$jugador
      {  
          
//$sql = "SELECT * FROM  `laser` WHERE  `numero` =? AND  `jugador` ='?' LIMIT 0 , 30";
          //$row = $this->_db->fetchAll($sql,array($numero,$jugador));  
          //$row = $this->fetchRow(array('numero = '. $numero,'jugador = '.$jugador));
          //return  $row['nivel']; 
          
$select $this->select()
                           ->
from(array('l'  => 'laser')) 
                           ->
where('l.numero= '.(int)$numero)
                           ->
where('l.jugador= '.$jugador);
            
$select->setIntegrityCheck(false);
            
$s $select->query()->fetchAll();
            return (int)
$s->nivel;
            
      }
function 
updateLaserNivel($numero$jugador$valor
      { 
            
$sql "UPDATE laser
                    SET nivel = ?
                    WHERE numero = ? AND jugador = ?"
;
            
$row $this->_db->update($sql,array((int)$valor,(int)$numero,$jugador));   
      }

Cuando hago servir la función select me da el siguiente error :

Cita:
An error occurred

Application error

Exception information:

Message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

Stack trace:

#0 C:\xampp\htdocs\joc1\library\Zend\Db\Statement.php (300): Zend_Db_Statement_Pdo->_execute(Array)
#1 C:\xampp\htdocs\joc1\library\Zend\Db\Adapter\Abstr act.php(479): Zend_Db_Statement->execute(Array)
#2 C:\xampp\htdocs\joc1\library\Zend\Db\Adapter\Pdo\A bstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#3 C:\xampp\htdocs\joc1\library\Zend\Db\Select.php(68 6): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#4 C:\xampp\htdocs\joc1\application\models\Laser.php( 18): Zend_Db_Select->query()
#5 C:\xampp\htdocs\joc1\application\controllers\JocCo ntroller.php(80): Application_Model_Laser->getLaserNivel(1, 'mod')
#6 C:\xampp\htdocs\joc1\library\Zend\Controller\Actio n.php(516): JocController->investAction()
#7 C:\xampp\htdocs\joc1\library\Zend\Controller\Dispa tcher\Standard.php(295): Zend_Controller_Action->dispatch('investAction')
#8 C:\xampp\htdocs\joc1\library\Zend\Controller\Front .php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 C:\xampp\htdocs\joc1\library\Zend\Application\Boot strap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#10 C:\xampp\htdocs\joc1\library\Zend\Application.php( 366): Zend_Application_Bootstrap_Bootstrap->run()
#11 C:\xampp\htdocs\joc1\public\index.php(26): Zend_Application->run()
#12 {main}
Request Parameters:

array (
'controller' => 'joc',
'action' => 'invest',
'module' => 'default',
)
Las preguntas son estas :

He provado hacer el select de muchas maneras diferentes y siempre me sale un error.
Como lo hago correctamente?
Como cojo el resultado del select correctamente para el return?

Como hago correctamente el update de la misma variable de la tabla?

PD: En las tablas donde tengo una PK de un solo valor no tengo problemas.

Espero que me puedan ayudar.

Gracias por adelantado.
  #2 (permalink)  
Antiguo 27/10/2011, 08:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Select y Update con Zend_Db_Table_Abstract

Lo ideal es que en tus where's los hagas así:

$select->where('l.nombre=?', $nombre);

Así el adaptador escapa tus variables correctamente.

Saludos.
  #3 (permalink)  
Antiguo 27/10/2011, 13:19
 
Fecha de Ingreso: octubre-2011
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Select y Update con Zend_Db_Table_Abstract

Cuando hago esos dos cambios me salta el siguiente error :

Cita:
An error occurred

Application error

Exception information:

Message: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

Stack trace:

#0 C:\xampp\htdocs\joc1\library\Zend\Db\Statement.php (300): Zend_Db_Statement_Pdo->_execute(Array)
#1 C:\xampp\htdocs\joc1\library\Zend\Db\Adapter\Abstr act.php(479): Zend_Db_Statement->execute(Array)
#2 C:\xampp\htdocs\joc1\library\Zend\Db\Adapter\Pdo\A bstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#3 C:\xampp\htdocs\joc1\library\Zend\Db\Select.php(68 6): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#4 C:\xampp\htdocs\joc1\application\models\Laser.php( 18): Zend_Db_Select->query()
#5 C:\xampp\htdocs\joc1\application\controllers\JocCo ntroller.php(80): Application_Model_Laser->getLaserNivel(1, 'mod')
#6 C:\xampp\htdocs\joc1\library\Zend\Controller\Actio n.php(516): JocController->investAction()
#7 C:\xampp\htdocs\joc1\library\Zend\Controller\Dispa tcher\Standard.php(295): Zend_Controller_Action->dispatch('investAction')
#8 C:\xampp\htdocs\joc1\library\Zend\Controller\Front .php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 C:\xampp\htdocs\joc1\library\Zend\Application\Boot strap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#10 C:\xampp\htdocs\joc1\library\Zend\Application.php( 366): Zend_Application_Bootstrap_Bootstrap->run()
#11 C:\xampp\htdocs\joc1\public\index.php(26): Zend_Application->run()
#12 {main}
Request Parameters:

array (
'controller' => 'joc',
'action' => 'invest',
'module' => 'default',
)
no entiendo a que debe ser debido. alguna pista?
  #4 (permalink)  
Antiguo 27/10/2011, 19:22
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años
Puntos: 37
Respuesta: Select y Update con Zend_Db_Table_Abstract

Fijate que valor viene en la variable $nombre

var_dump( $nombre);exit;
__________________
blog
  #5 (permalink)  
Antiguo 28/10/2011, 17:04
 
Fecha de Ingreso: octubre-2011
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Select y Update con Zend_Db_Table_Abstract

gracias a los dos, lo he podido solucionar :D

saludos.

Etiquetas: mysql, select, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:33.