"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como recuperar variáveis ​​de saída de procedimentos armazenados do MySQL em PHP com PDO?

Como recuperar variáveis ​​de saída de procedimentos armazenados do MySQL em PHP com PDO?

Publicado em 2024-11-18
Navegar:369

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

Recuperando variáveis ​​de saída de procedimento armazenado em PHP com PDO

Objetivo: Buscar o valor LAST_INSERT_ID() de um procedimento armazenado MySQL e atribuí-lo a uma variável PHP.

Declaração do problema

Apesar do código PHP fornecido usando ligações PDO, ele não consegue capturar a variável de saída LAST_INSERT_ID() do procedimento armazenado simpleProcedure.

Explicação

Buscar variáveis ​​de saída de procedimentos armazenados do MySQL em PHP PDO envolve um processo de dois estágios:

  1. Executar o procedimento armazenado e atribuir variáveis ​​de saída às variáveis ​​de usuário do MySQL.
  2. Consultando as variáveis ​​de usuário do MySQL para recuperar seus valores em variáveis ​​PHP.

Solução: Processo em Duas Etapas

Etapa 1: Execução do Procedimento

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();

Ao vincular o espaço reservado :returnid como INOUT, o PDO não apenas passará a variável PHP para o procedimento, mas também a atualizará com o valor da variável de saída.

Etapa 2: Recuperando a variável de saída

$sql = "SELECT @returnid AS output_id";
$result = $db->query($sql)->fetch(PDO::FETCH_ASSOC);

$lastInsertId = $result['output_id'];

Consulte a variável de usuário MySQL @returnid para atribuir seu valor à variável PHP $lastInsertId.

Nota

Binding PHP variáveis ​​​​para parâmetros INOUT e OUT para procedimentos MySQL podem encontrar erros de tempo de execução. Recomenda-se vincular variáveis ​​apenas aos parâmetros IN.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3