Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/11/2013, 02:49
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema al intentar guardar datos

Finalmente, el archivo que realiza las consultas a la BD:
Código PHP:
Ver original
  1. <?php
  2. class Cls_Consultas {
  3.     function paises($conexion) {
  4.         return mysqli_query($conexion, "CALL USP_listCountries()");
  5.     }
  6.  
  7.     function ciudades($conexion, $pais) {
  8.         return mysqli_query($conexion, sprintf("CALL USP_listCities(%d)", $pais));
  9.     }
  10.  
  11.     function codigo($conexion, $codigo) {
  12.         return mysqli_query($conexion, sprintf("CALL USP_validateCode('%s')", $codigo));
  13.     }
  14.  
  15.     function email($conexion, $email) {
  16.         $z = mysqli_query($conexion, sprintf("CALL USP_validateEmail('%s')", $email));
  17.         echo $z ? "¡Bien Email!" : "EMAIL " . mysqli_error($conexion) . "<br />";
  18.         return $z;
  19.     }
  20.  
  21.     function guardarForm($conexion, $datos) {  
  22.         $g = mysqli_query($conexion, sprintf("CALL USP_saveForm('%s', '%s', '%s', '%s', '%s', '%s', %d, %d)",
  23.                 $datos["codigo"],
  24.                 $datos["nombre"],
  25.                 $datos["apellidos"],
  26.                 $datos["email"],
  27.                 $datos["domicilio"],
  28.                 $datos["fechanac"],
  29.                 $datos["pais"],
  30.                 $datos["ciudad"]
  31.             ));
  32.         echo $g ? "¡Bien Guardar!" : "GUARDAR " . mysqli_error($conexion) . "<br />";
  33.         return $g;
  34.     }
  35. }
  36. ?>

La tabla de la BD en donde se deben de guardar los datos, fue creada así:
Código MySQL:
Ver original
  1. CREATE TABLE `datos` (
  2.     `codigo` VARCHAR(10) NOT NULL COLLATE 'utf8_unicode_ci',
  3.     `nombre` VARCHAR(150) NOT NULL COLLATE 'utf8_unicode_ci',
  4.     `apellidos` VARCHAR(150) NOT NULL COLLATE 'utf8_unicode_ci',
  5.     `email` VARCHAR(80) NOT NULL COLLATE 'utf8_unicode_ci',
  6.     `domicilio` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
  7.     `fechanac` DATE NOT NULL,
  8.     `pais` INT(11) NOT NULL,
  9.     `ciudad` INT(11) NOT NULL,
  10.     PRIMARY KEY (`codigo`)
  11. )
  12. COLLATE='utf8_unicode_ci'
  13. ENGINE=MyISAM;

Y el PA con el que tengo el problema es este:
Código MySQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `USP_saveForm`(IN `code` VARCHAR(10), IN `name` VARCHAR(150), IN `lastname` VARCHAR(150), IN `email` VARCHAR(80), IN `address` VARCHAR(255), IN `birthdate` DATE, IN `country` INT, IN `city` INT)
  2.     CONTAINS SQL
  3.     COMMENT ''
  4. INSERT INTO datos VALUES (code, name, lastname, mail, address, birthdate, country, city)

He probado imprimiendo los datos antes y después de enviarlos y se muestran bien, los datos están completos y en orden, del mismo modo en que está especificado en la estructura del PA. La conexión también es correcta (de otro modo, los demás PA fallarían y no se llenarían los combos con los datos respectivos), el problema ocurre al intentar guardar los datos, utilizando la función mysqli_errno(), se muestra el código de error 2014 de descripción "Commands out of sync; you can't run this command now"; me extraña que este sea el único PA que esté fallando, aparentemente la sintaxis es correcta.

Antes de que alguien me lo pida, este es el archivo de conexión a la BD:
Código PHP:
Ver original
  1. <?php
  2. class Cls_Conexion {
  3.     public $conexion;
  4.  
  5.     function __construct() {
  6.         $this->conexion = false;
  7.     }
  8.  
  9.     function conectar() {
  10.         //Conexión a la base de datos
  11.         $servidor = "localhost"; //Nombre del servidor
  12.         $usuario = "root"; //Nombre de usuario en tu servidor
  13.         $password = "phpdeveloper"; //Contraseña del usuario
  14.         $base = "bd_formulario"; //Nombre de la Base de Datos
  15.  
  16.         //Se realiza la conexión
  17.         $this->conexion = mysqli_connect($servidor, $usuario, $password) or die ("Error al conectarse al servidor");
  18.  
  19.         //Si se logra realizar la conexión a la Base de Datos
  20.         if ($this->conexion)
  21.             //Se selecciona la base de datos con la que se trabajará
  22.             mysqli_select_db($this->conexion, $base) or die ("Error al conectarse a la base de datos");
  23.  
  24.         return $this->conexion;
  25.     }
  26.    
  27.     function __destruct() {
  28.         mysqli_close($this->conexion);
  29.     }
  30. }
  31. ?>

Estoy utilizando el AppServ 2.5.10, que contiene lo siguiente:
  • Apache 2.2.8
  • PHP 5.2.6
  • MySQL 5.0.51b
  • phpMyAdmin-2.10.3

Acudo a ustedes para que por favor me den una mano con esto, quizá alguno de ustedes puede ver el error que no logro divisar. Gracias de antemano.