Mysql
 sql >> Base de données >  >> RDS >> Mysql

Procédures stockées, MySQL et PHP

@michal kralik - malheureusement, il y a un bogue avec l'API MySQL C que PDO utilise, ce qui signifie que l'exécution de votre code comme ci-dessus avec certaines versions de MySQL entraîne l'erreur :

Vous pouvez voir le rapport de bogue sur bugs.mysql.com . Il a été corrigé pour les versions 5.5.3+ et 6.0.8+.

Pour contourner le problème, vous devez séparer les paramètres d'entrée et de sortie et utiliser des variables utilisateur pour stocker le résultat comme ceci :

$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";