2017-12-07 9 views
0

PHPからストアドプロシージャを呼び出してデータベースから行を返そうとしています。しかし、私がこれを行うと、私は通常どのように "一般的なエラー"を得るでしょう。ここでPDO :: fetchAllがMySQLストアドプロシージャで動作しない

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error in C:\xampp\htdocs\Skilaverkefni 4\Courses\read.php:11 
Stack trace: 
#0 C:\xampp\htdocs\Skilaverkefni 4\Courses\read.php(11): PDOStatement->fetchAll(2) 
#1 C:\xampp\htdocs\Skilaverkefni 4\index.php(13): ReadCourse('FOR3L3U') 
#2 {main} 
    thrown in C:\xampp\htdocs\Skilaverkefni 4\Courses\read.php on line 11 

はコードです:

<?php 

    function ReadCourse($courseID) 
    { 

     require "dbCon.php"; 
     $SQL = "SET @p0='" . $courseID . "'; CALL ReadCourse(@p0);"; 
     echo "$SQL"; 
     $logon = $pdo->prepare($SQL); 
     $logon->execute(); 
     $records = $logon->fetchAll(PDO::FETCH_ASSOC); 

     print_r($records); 

    } 



?> 

長いGoogleのセッションの後、私は問題はほとんど私が保存されたから返されたデータの読み取りを処理しています方法によるものであることが判明しましたプロシージャ、これを正しく行う方法は?

答えて

0

PDOの全ポイントは、あなたが文字列として渡すことを選択した古いデータベースクエリを実行できないようにすることです。 documentationから

FYI
<?php 
/* Call a stored procedure with an INOUT parameter */ 
$colour = 'red'; 
$sth = $dbh->prepare('CALL puree_fruit(?)'); 
$sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12); 
$sth->execute(); 
print("After pureeing fruit, the colour is: $colour"); 
?> 
+0

、MySQLのINOUTパラメータでhttps://stackoverflow.com/questions/23747835/mysql-retrieve-variable-from-stored-procedure-in-php動作しません。 -pdo/23749445#23749445 –

関連する問題