Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

procedimientos almacenados

Estas en el tema de procedimientos almacenados en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola que tal Necesito que alguien me ayude en lo siguiente. Estoy haciendo una interfaz de abstraccion de acceso a datos utilizando mysqli.Lo que pasa ...
  #1 (permalink)  
Antiguo 10/04/2007, 23:06
 
Fecha de Ingreso: enero-2006
Mensajes: 47
Antigüedad: 18 años, 3 meses
Puntos: 0
procedimientos almacenados



Hola que tal

Necesito que alguien me ayude en lo siguiente.

Estoy haciendo una interfaz de abstraccion de acceso a datos utilizando mysqli.Lo que pasa es que quiero hacer una funcion que tu le pases en nombre del procedimiento(o query) y a continuacion en un orden la cantidad de parametros(si lo requiere); para ejecutar dicho procedimiento(o query).

La primera parte de la funcion la tengo echa que es la de coger en nombre del procedimiento(o query) y los parametros si lo requiere.

Pero viene una inconveniencia.
Que como no se de antemano la cantidad de parametros y el tipo de valor de los parametros a la hora de creer la funcion $stmt->bind_param()
o mysqli_stmt_bind_param() no se como llenar esta funcion.

Que puedo hacer

Nota: ya utilice la funcion eval()

Para una idea mire el codigo que sigue; que si funciona pero no es lo que quiero hacer. Como les dije anteriormente lo que quiero hacer es una clase que tu le pases la consulta o el nombre del procedimiento almacenado y ella se encargue de hacerlo todo(como si el desarrollador no supiera nada de mysqli).

espero que me haya esplicado bien.

<?php
$connect = new mysqli(null,"root","marcel","curso");

if($connect){

$connect->autocommit(false);

$stmt = $connect->stmt_init();

$dia = 145;

$ano = 125;

$stmt->prepare("INSERT INTO fecha VALUES(?,?)");

$stmt->bind_param('ii',$dia,$ano);// a qui esta el problema

$stmt->execute();

$error = $stmt->error;

if($error == ""){

$stmt = $connect->stmt_init();

$nombre = "marcel";

$stmt->prepare("INSERT INTO persona VALUES(?)");

$stmt->bind_param('s',$nombre);

$stmt->execute();

$error = $stmt->error;
}

if($error != "") {

echo $error;

$connect->rollback ();

}
else

$connect->commit();

$connect->close();
}
else

echo "Error en la conexion";

?>
  #2 (permalink)  
Antiguo 10/04/2007, 23:50
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: procedimientos almacenados

Tu problema es que no sabes cuantos parametros van a ser puestos en el metodo?
si es eso... pues ponlos en null
$stmt->bind_param($par1=null,$par2=null,$par3=null);
y ya en base a eso puedes trabajar y no te va a dar error, si no te pasaron algun parametro.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #3 (permalink)  
Antiguo 11/04/2007, 07:59
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
Re: procedimientos almacenados

Es mejor usar cosas mas limpias, PHP nos da dos funciones muy buenas func_num_args y func_get_args.

Un ejemplo:
Código PHP:
<?php
function foo()
{
    
$num_args func_num_args();
    echo 
"Numero de argumentos: $num_args<br />\n";
    if (
$num_args >= 2) {
        echo 
"El segundo argumento es: " func_get_arg(1) . "<br />\n";
    }
    
$lista_args func_get_args();
    for (
$i 0$i $num_args$i++) {
        echo 
"El argumento $i es: " $lista_args[$i] . "<br />\n";
    }
}

foo(123);
?>
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 13:04.