Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO语句:过程的参数数量不正确_Php_Mysql_Stored Procedures - Fatal编程技术网

PHP PDO语句:过程的参数数量不正确

PHP PDO语句:过程的参数数量不正确,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,这个代码有什么问题 $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(*

这个代码有什么问题

$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//
错误是:过程的参数数量不正确,预期为2,实际为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);

你可以参考这个

你在哪里为numRows提供参数?我不知道你的意思;numRows必须是过程的输出参数。不是吗?谢谢。两个答案都可能重复或以太方式读取。但是rowcount是过程的输出参数,为什么我必须传递它?不管怎样,我尝试了这个结果:例程SearchUser的1414out或INOUT参数2在触发器之前不是一个变量或新的伪变量。当您获得输出时,您需要将它保留在某个位置。对吗?@JamieITGirl你指的是一只虫子。请参考这个答案@JamieITGirl我不确定你的完整代码,否则我会更新答案,但我有mysql版本5.6.35!我引述:“版本5.5.3+和6.0.8+已经修复。”