我有一个INOUT参数的程序。当我从phpMyAdmin中调用该过程时,它工作得很好,但是后来我没有看到INOUT参数的值,就像我只使用OUT时那样。
现在,我尝试使用PDO从php调用此过程:
$query = "CALL setSessionId(:user_id, :session_id);";
$statement = $this->database->prepare($query);
$statement->bindValue(':user_id', $user_id);
$statement->bindParam(':session_id', $session_id, PDO::PARAM_INPUT_OUTPUT);
$session_id = "test";
echo "<p>before: $session_id</p>";
$statement->execute();
echo "<p>afterwards: $session_id</p>";
PDOStatement::bindParam documentation表示在execute
使用PDO::PARAM_INPUT_OUTPUT
后,您无需取消任何内容,但session_id
最终不在数据库中,并且不是'{1}}执行后更新。
如果我将session_id
更改为仅IN参数并添加一个额外的OUT参数,我会在execute
之后获取它。