Mysql
 sql >> Database >  >> RDS >> Mysql

Stored procedure, MySQL e PHP

@michal kralik - sfortunatamente c'è un bug con l'API C di MySQL utilizzata da PDO, il che significa che l'esecuzione del codice come sopra con alcune versioni di MySQL comporta l'errore:

Puoi vedere la segnalazione di bug su bugs.mysql.com . È stato corretto per le versioni 5.5.3+ e 6.0.8+.

Per aggirare il problema, dovresti separare i parametri in entrata e in uscita e utilizzare le variabili utente per memorizzare il risultato in questo modo:

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