Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Procedimentos armazenados, MySQL e PHP


@michal kralik - infelizmente, há um bug com a API C do MySQL que o PDO usa, o que significa que executar seu código como acima com algumas versões do MySQL resulta no erro:

Você pode ver o relatório do bug em bugs.mysql.com . Foi corrigido para a versão 5.5.3+ e 6.0.8+.

Para contornar o problema, você precisaria separar os parâmetros de entrada e saída e usar variáveis ​​de usuário para armazenar o resultado assim:
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(:in_string, @out_string)");
$stmt->bindParam(':in_string', 'hello'); 

// call the stored procedure
$stmt->execute();

// fetch the output
$outputArray = $this->dbh->query("select @out_string")->fetch(PDO::FETCH_ASSOC);

print "procedure returned " . $outputArray['@out_string'] . "\n";