Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gespeicherte Prozeduren, MySQL und PHP

@michal kralik - leider gibt es einen Fehler in der MySQL-C-API, die PDO verwendet, was bedeutet, dass die Ausführung Ihres Codes wie oben mit einigen Versionen von MySQL zu folgendem Fehler führt:

Sie können den Fehlerbericht auf bugs.mysql.com einsehen . Es wurde für Version 5.5.3+ und 6.0.8+ behoben.

Um das Problem zu umgehen, müssten Sie Eingangs- und Ausgangsparameter trennen und Benutzervariablen verwenden, um das Ergebnis wie folgt zu speichern:

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