Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/10/2010, 12:23
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Validar ejecución de un SP en php

Buenas,

Tras varias pruebas empiracas he podido comprobar que el problema es del Stored Procedure, ya que con consultas normales si que funciona.

Código PHP:
Ver original
  1. <?php
  2. require_once('BD/DB_config_reader.class.php');
  3. require_once('BD/MyPDO.class.php');
  4. require_once('BD/Registry.class.php');
  5.  
  6. $db_master = dbFactory::create('BD/bd_master.ini');
  7. //$query = "SELECT pais_id, pais FROM tbl_paises";
  8. //$query = "INSERT INTO tbl_paises (pais) VALUES ('maravillas')";
  9. $query = "CALL sp_nuevoUsuario ('dani999','12345','asfasfs','Juanito','[email protected]','1985-2-3','H',70,'129.65.54.61')";
  10. $comando = $db_master->prepare($query);
  11. $comando->execute();
  12. echo $comando->rowCount();
  13.  
  14. ?>

Os muestro el SP, por si me podéis decir si es culpa de algo del código

Código SQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `mentes_estrategas`.`sp_nuevoUsuario` $$
  4. CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_nuevoUsuario`(
  5.   IN vuser_login VARCHAR(25),
  6.   IN vuser_pass VARCHAR(30),
  7.   IN vuser_activation_key VARCHAR(40),
  8.   IN vuser_name VARCHAR(30),
  9.   IN vuser_mail VARCHAR(45),
  10.   IN vuser_birthday DATE,
  11.   IN vuser_sexo CHAR(1),
  12.   IN vuser_pais SMALLINT,
  13.   IN vip_registro VARCHAR(15))
  14. BEGIN
  15.  
  16. START TRANSACTION;
  17.  
  18.   INSERT INTO tbl_user(
  19.     user_login,
  20.     user_pass,
  21.     user_activation_key)
  22.   VALUES(
  23.     vuser_login,
  24.     vuser_pass,
  25.     vuser_activation_key);
  26.  
  27.   INSERT INTO tbl_user_personal(
  28.     user_id,
  29.     user_name,
  30.     user_mail,
  31.     user_birthday,
  32.     user_sexo,
  33.     user_pais)
  34.   VALUES (
  35.     (SELECT LAST_INSERT_ID()),
  36.     vuser_name,
  37.     vuser_mail,
  38.     vuser_birthday,
  39.     vuser_sexo,
  40.     vuser_pais);
  41.  
  42.   INSERT INTO tbl_registro (
  43.     user_id,
  44.     fecha_registro,
  45.     ip_registro)
  46.   VALUES (
  47.     (SELECT LAST_INSERT_ID()),
  48.     NOW(),
  49.     vip_registro);
  50.  
  51. COMMIT;
  52.  
  53. END $$
  54.  
  55. DELIMITER ;

¿Alguien puede probar si con la clase PDO al ejecutar un SP luego cuando hace un rowCount() si le funciona bien, y aparece un número > 0?

Ya no se que más mirar :S

Muchas gracias de antemano