【问题标题】:PHP PDO Statement: Incorrect number of arguments for PROCEDUREPHP PDO 语句:PROCEDURE 的参数数量不正确
【发布时间】:2018-03-05 01:24:37
【问题描述】:

这段代码有什么问题?

$statement = $dbConn->prepare("CALL SearchUser(?)");
$statement->bindParam(1, $username, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);

这是程序:

CREATE PROCEDURE SearchUser(IN Username VARCHAR(10), OUT numRows INT) 
BEGIN SELECT COUNT(*) INTO numRows 
FROM USER
WHERE Username='IN'; 
END//

错误是:PROCEDURE 的参数数量不正确,预期 2 得到 1。 为什么?谢谢。

【问题讨论】:

标签: php mysql stored-procedures


【解决方案1】:

你需要传递两个参数

$statement = $dbConn->prepare("CALL SearchUser(?,?)");
$statement->bindParam(1, $username, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);
$statement->bindParam(2, $rowcount, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT);

你可以参考这个article

【讨论】:

  • 但是rowcount是程序的输出参数,为什么一定要传呢?无论如何我尝试了这个结果:1414 OUT or INOUT argument 2 for routine SearchUser is not a variable or NEW pseudo-variable in BEFORE trigger
  • 当你得到输出时,你需要把它放在某个地方。对吗?
  • @JamieITGirl 你指的是,似乎是一个错误。请参考这个答案stackoverflow.com/questions/10428480/…
  • @JamieITGirl 我不确定你的完整代码,否则我会更新答案
  • 但是我有mysql版本5.6.35!我引用:“版本 5.5.3+ 和 6.0.8+ 已修复。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2013-05-04
相关资源
最近更新 更多