Value returned from procedure (PDO)

0

The procedure is running fine, but in case I am not able to get the value it returns, I already looked in the php documentation link , but not yet.

function

static function inserirCliente($cpf, $nome, $sobrenome, $usuario, $senha) {

    $con = ConnectionFactory::getConnection();
    $con->beginTransaction();

    try {

        $stmt = $con->prepare("call prc_cadastrar_usuario(:cpf, :nome, :sobrenome, :usuario, :senha, :msg)");
        $stmt->bindParam('cpf', $cpf, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
        $stmt->bindParam('nome', $nome , PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
        $stmt->bindParam('sobrenome', $sobrenome, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
        $stmt->bindParam('usuario', $usuario, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
        $stmt->bindParam('senha', $senha, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT);
        $stmt->bindParam('msg', $resultado, PDO::PARAM_INPUT_OUTPUT, 4000);            
        if ($stmt->execute()) {
            $con->commit();
        } else {
            echo $stmt->errorCode();
            $con->rollBack();
        }
    } catch (PDOException $e) {
        $con->rollBack();
        echo $e->getMessage();
        echo $e->getLine();
    }
    $con = null;
    return $resultado;
}

connection, tables and procedure

class ConnectionFactory{
static function getConnection(){
    $db = 'projeto_php_pdo';
    $user = 'leandro';
    $psw = 'Leandro24';
    try {
        $con = new PDO("mysql:host=localhost;dbname=$db", $user, $psw); 
        return $con;
    } catch (Exception $ex) {
        echo $ex->getMessage();
    }   
}
}

create table if not exists tbl_usuario(
cpf varchar(11) not null,
constraint cpf_pk primary key(cpf),
nome nvarchar(30),
sobrenome nvarchar(30)
);

create table if not exists tbl_login(
id_login int not null auto_increment,
constraint id_login_pk primary key(id_login),
usuario nvarchar(30),
senha nvarchar(255),
cpf_login_fk varchar(11) not null unique,
constraint cpf_usuario_login_fk foreign key (cpf_login_fk) references                     
tbl_usuario on delete cascade on update cascade
);

DELIMITER //
drop procedure if exists prc_cadastrar_usuario //
CREATE PROCEDURE prc_cadastrar_usuario (
in n_cpf varchar(11),
in n_nome nvarchar(30),
in n_sobrenome nvarchar(30),
in n_usuario nvarchar(30),
in n_senha nvarchar(255),
out msg nvarchar(200)
)
BEGIN
declare v_cpf varchar(11);
declare v_nome nvarchar(30);
declare v_sobrenome nvarchar(30);
declare v_usuario nvarchar(30);
declare v_senha nvarchar(255);

-- seleciona  no banco os dados que entraram
set v_cpf := (select cpf from tbl_usuario where cpf = n_cpf);
set v_usuario := (select usuario from tbl_login where usuario = n_usuario);

-- verifica se os dados da select são iguais aos que entraram
if ( (v_cpf is null) && (v_usuario is null) ) then
    insert into tbl_usuario (cpf, nome, sobrenome) values (n_cpf, n_nome, n_sobrenome);
    insert into tbl_login (usuario, senha, cpf_login_fk) values (n_usuario, n_senha, n_cpf);
    set msg := 'Cadastrado!'; 
elseif ( (v_cpf = n_cpf) && (v_usuario is null) ) then
    set msg := 'CPF já cadastrado!'; 
elseif ( (v_cpf is null) && (v_usuario = n_usuario) ) then  
    set msg := 'Usuário já cadastrado!'; 
else 
    set msg := 'Erro ao cadastrar';
end if;

END//
DELIMITER ;
    
asked by anonymous 06.07.2018 / 23:16

0 answers