sql >> Databasteknik >  >> RDS >> Mysql

Lagrade procedurer, MySQL och PHP

@michal kralik - tyvärr finns det en bugg med MySQL C API som PDO använder vilket innebär att körning av din kod enligt ovan med vissa versioner av MySQL resulterar i felet:

Du kan se felrapporten på bugs.mysql.com . Det har åtgärdats för version 5.5.3+ och 6.0.8+.

För att komma runt problemet måste du separera in- och utparametrar och använda användarvariabler för att lagra resultatet så här:

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


  1. Var lagrar Android SQLites databasversion?

  2. Använda MySQL-klientapplikationer

  3. Escapende kolumnnamn i PDO-satser

  4. PHP Apache kraschar när en LAGRAD PROCEDUR körs