我试图通过PHP调用存储过程从数据库返回一行。但是,当我这样做时,我通常会得到“一般错误”。
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 :(得分:0)
PDO的全部意义在于无法运行您选择以字符串形式传递的任何旧数据库查询。
<?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");
?>