@michal kralik - rất tiếc có một lỗi với MySQL C API mà PDO sử dụng, có nghĩa là việc chạy mã của bạn như trên với một số phiên bản của MySQL dẫn đến lỗi:
Bạn có thể xem báo cáo lỗi trên bug.mysql.com . Nó đã được sửa cho phiên bản 5.5.3+ &6.0.8+.
Để giải quyết vấn đề, bạn cần phải tách biệt các tham số vào và ra và sử dụng các biến người dùng để lưu trữ kết quả như sau:
$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";