Hola.
estoy con proeblamas con un stored procedure.
la idea es usarlo cuando registre un usuario.
y si existe. me regre el numero de id autoincrementable. ultimo. si es que no existe el usuario
y que me regrese un valor que me confirme si existe o no
como herramienta use heidisql que me da el error de que estoy declarando parametros que necesitan ingresar valor.
yo tengo entendido que como son valores INOUT o OUT, no me los deberia de pedir
y me da error. con sql maestro me dice que no se encuentra la columna maria pero si yo declare la columna como usuario. y maria
es el valor que voy a usar.
con la consola de comandos de mysql no he tenido suerte. me da error de odbc, cuando hago el login.
en php me da el error Fall� SELECT: (2014) Commands out of sync; you can't run this command now
Código:
<?php
$mysqli = new mysqli("localhost", "root", "a2210", "ejemplo");
if ($mysqli->connect_errno) {
echo "Falló la conexión a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
if (!$mysqli->query("CALL usuarioregistra('maria111', 'dsa111', 'fe11')")) {
echo "Falló CALL: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!($resultado = $mysqli->query("SELECT idusuario FROM usuario"))) {
echo "Falló SELECT: (" . $mysqli->errno . ") " . $mysqli->error;
}
// var_dump($resultado->fetch_assoc());
?>
este es el stored procedured.
Código SQL
[-]
DROP PROCEDURE IF EXISTS usuarioregistra;
DELIMITER |
CREATE DEFINER = 'root'@'localhost' PROCEDURE usuarioregistra
(
IN username varchar(20),
IN userpass varchar(20),
IN usermail varchar(20),
INOUT IDUSER int,
INOUT EXISTUSER int
)
BEGIN
DECLARE SomeId int;
DECLARE CheckExists int;
SET CheckExists = 0;
SELECT count(*) INTO CheckExists from usuarios WHERE usuario = username;
IF (CheckExists > 0) THEN
SELECT idusuario INTO SomeId FROM usuarios WHERE usuario = username;
set EXISTUSER = 1;
ELSE
insert into usuarios(usuario,contra, email_address)
values (username,userpass, usermail);
SELECT SomeId = LAST_INSERT_ID();
set EXISTUSER = 0;
END IF;
END|
DELIMITER ;
¿que hago mal?
¿si se pueden obtener valores de regreso del ultimo registro ingresado?
¿si se pueden obtener valores como lo estoy haciendo?
gracias