[PHP-MYSQL] Como crear un sp en php?

Iniciado por klaine, 1 Noviembre 2011, 02:03 AM

0 Miembros y 1 Visitante están viendo este tema.

klaine

Hola estoy intentando crear un procedimiento almacenado desde php a mysql, que estoy haciendo mal?

Código (php) [Seleccionar]


<html>
<head>
</head>
<body>
       <?php

        mysql_connect
("localhost""root""sr388");

        
$b=mysql_query("
create procedure pedir(in strCodBicicleta varchar(255), in strCodPeticion varchar(255), in strCodUsuario varchar(255))
begin

update bicicleta set estado='usando' where cod_bicicleta=strCodBicicleta;

insert into peticion(cod_peticion, usuario, fecha, hora)values(strCodPeticion, strCodUsuario, current_date, current_time);

end
"
);

        if(
$b){

            echo 
"funka";

        }else{

            echo 
"T_T";

        }

        
?>

</body>
</html>





Dejo las tablas bicicleta, peticion y usuario:

Código (mysql) [Seleccionar]


create table usuario(

username varchar(255) not null primary key,
permisos varchar(4) not null, -- 'ADM' o 'USER'
password varchar(255) not null,
e_mail varchar(255) not null

)engine=innodb;



Código (mysql) [Seleccionar]


create table bicicleta(

cod_bicicleta varchar(255) not null primary key,
estado varchar(6) not null -- 'usando' o 'libre'

)engine=innodb;



Código (mysql) [Seleccionar]


create table peticion(

cod_peticion int unsigned not null primary key,
usuario varchar(255) not null references usuario(username),
fecha date not null,
hora time not null

)engine=innodb;




De antemano, gracias

PD: en la shell funka con el uso de delimiter

lnvisible

Esa función no está hecha para eso.

Si pinchas en el mismo código que has puesto te lleva aquí
http://uk.php.net/mysql_query

¿Ves que ponga algo de procedimientos? ¿no?, pues sí, lo pone ^^

Tienes que crear el procedimiento desde la shell y luego invocarlo, en la misma página hay un ejemplo.

Código (PHP) [Seleccionar]
<?php
    
//...
    
$rs mysql_query('CALL sproc2(500)');
    while ((
$row=mysql_fetch_assoc($rs))!==false) {
        
print_r($row);
    }
    
mysql_free_result($rs);

    
$rs mysql_query('CALL sproc2(500)');
    print 
mysql_error(); //the notorious 'command out of synch' message :(
    
while (($row=mysql_fetch_assoc($rs))!==false) {
        
print_r($row);
    }
    
mysql_free_result($rs);
?>

klaine

El problema que tengo es que quiero pasarle este sp a mis compañeros con los que estoy haciendo este trabajo, el procedimiento almacenado en la shell me funka así:

Código (mysql) [Seleccionar]


delimiter '$$'

create procedure pedir(in strCodBicicleta varchar(255), in strCodPeticion varchar(255), in strCodUsuario varchar(255))
begin

update bicicleta set estado='usando' where cod_bicicleta=strCodBicicleta;

insert into peticion(cod_peticion, usuario, fecha, hora)values(strCodPeticion, strCodUsuario, current_date, current_time);

end
$$

DELIMITER ';'



Pero mis compañeros no usan la shell, es mas, ni siquiera tienen el query browser, usan la gui de phpmyadmin, y por cierto, este code intenté meterlo en el querybrowser de mi instituto y no me funka, reformulo la pregunta, como puedo pasarle este sp a mis compañeros?, había pensado hacer un archivo.php que lo ejecuten y se les cree solo :P, pero veo que no se puede

Desde ya, agradeciendo sus respuestas

Saludos!

lnvisible