marlanga, seguí tu consejo, deshabilité las validaciones y desinfecciones y coloqué datos de forma directa, lo mismo con el código que se autogeneraba con un métdo de la clase
Cls_Consultas(). Obtuve exactamente los mismos resultados que en las pruebas que había realizado antes de publicar este hilo: Basta con que utilice un método de la clase, para que, después de usarlo satisfactoriamente, la instancia se pierda. En este caso, sucedió con el método
email(), pero lo mismo sucedía con el método que generaba el código.
Esta es la clase con los métodos:
Código PHP:
Ver original<?php
class Cls_Consultas {
public $conexion;
function __construct($conex) {
$this->conexion = $conex;
}
function paises() {
return $this->conexion->query("CALL USP_listCountries()");
}
function ciudades($pais) {
return $this->conexion->query(sprintf("CALL USP_listCities(%d)", $pais)); }
function codigo($codigo) {
return $this->conexion->query(sprintf("CALL USP_validateCode('%s')", $codigo)); }
function email($email) {
return $this->conexion->query(sprintf("CALL USP_validateEmail('%s')", $email)); }
function guardarForm($datos) {
return $this->conexion->query(sprintf("CALL USP_saveForm('%s', '%s', '%s', '%s', '%s', '%s', %d, %d)", $datos["codigo"],
$datos["nombre"],
$datos["apellidos"],
$datos["email"],
$datos["domicilio"],
$datos["fechanac"],
$datos["pais"],
$datos["ciudad"]
));
}
}
?>
Y esos son los procedimientos almacenados
críticos:
Código MySQL:
Ver original/* PA que verifica que el código no se encuentre registrado */
/* PA que verifica que el email ingresado, no se encuentre registrado */
/* PA que guarda los datos del formulario en la BD luego de todas las validaciones */
INSERT INTO datos
VALUES (codigo
, nombre
, apellidos
, email
, domicilio
, fechanac
, pais
, ciudad
)
Hay otros dos PA que utilizo en otros archivos, con ellos no tuve problemas pues solamente invoco a uno de los métodos de la clase, por cada archivo, sin embargo, si, por ejemplo, intento listar los datos de una tabla invocando otro método, que a su vez, invoca a un PA, éste no se ejecuta, produciéndose el mismo problema que con los otros 3 métodos en cuestión.
En síntesis, cuando invoco a un método de la clase, funciona sin problemas, pero si, en el mismo archivo, invoco a otro método o al mismo nuevamente, no funcionan por el problema que les expliqué. Como verán en el código, instancio a otras tres clases, de las cuales, utilizo más de una vez a los métodos de dos de ellas y no se produce el problema que ocurre con la clase que interactúa con la BD.