PHP中的存储过程MySQLi返回错误

时间:2016-12-07 21:58:07

标签: php mysql stored-procedures mysqli

我有一个存储过程,用于从数据库中提取结果集。根据参数,它可能返回0条记录(这是正常的)。我唯一的问题是,在它返回0记录的实例中,PHP抛出异常。这是我的代码;

public function MyMethod($strParam)
    {
        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
        $strSQL = "spStoredProc(?)";
        $objStatement = $this->objDB->prepare($strSQL);

        $objStatement->bind_param("s",$strParam);
        $objStatement->execute();
        $objResult = $objStatement->get_result();
        if (!$objResult) 
        {
            throw new Exception("Database Error [{$this->objDB->errno}] {$this->objDB->error}");  //<<thrown
        }
        $objReturn = array();
        while($objRow = $objResult->fetch_assoc()) 
        {
            $objReturn[] = $objRow;
        }
        return $objReturn;
    }

抛出的异常是;

 Uncaught Exception: Database Error [0]  in /var/www/bla/dbClass.php:56\nStack trace:\n#0 /var/www/bla/main.php(19): dbClass->MyMethod('stuff')\n#1 {main}\n  thrown in /var/www/bla/dbClass.php on line 56

存储过程创建代码

    CREATE DEFINER=`root`@`%` PROCEDURE `spStoredProc`(IN `strParam` VARCHAR(50))
        LANGUAGE SQL
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
BEGIN
//bunch of code
END

所以当我跑;

var_dump($myDBObj->MyMethod("ShouldReturnZeroRows")) //exception
var_dump($myDBObj->MyMethod("ShouldReturnTenRows")) //works great!

我是否有些东西误解了存储过程会导致预处理语句失败并且没有返回结果?

服务器是运行PHP版本7.0.8,MySQL 5.7.16的Ubuntu。

0 个答案:

没有答案