错误 - 类型定义字符串中的元素数量与绑定变量的数量不匹配

时间:2014-08-05 12:11:22

标签: php mysql mysqli

$call = "CALL spuser( ?,  ?,?,)" ;
$stmt = $connection2->prepare($call);
if ( !$stmt ) {
   die('prepare failed');
}
if ( !$stmt->bind_param('ssssssss',$_POST['name'],$_POST['lname'],$_POST['address']) ) {
   // $stmt->error has more info
   die('bind failed');
}
if ( !$stmt->execute() ) {
   // $stmt->error has more info
   die('execute failed');
}

$stmt->close();

存储过程是:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `spuser`(

IN id bigint, IN name varchar(25), IN lname varchar(25), IN address varchar(25), IN phoneno varchar(10), IN city varchar(10) )
BEGIN

Insert INTO user( name, lname, address, phoneno, city ) values (name, lname, address, phoneno, city) ;

END

作为我的项目要求,我必须在存储过程中将5个字段作为IN参数,但在调用过程时,我将来只需使用3个其他字段。

1 个答案:

答案 0 :(得分:0)

我看到两个错误。 1)$call = "CALL spuser( ?, ?,?,)";只需要三个参数,但您传递的是4:$stmt->bind_param('ssssssss',$_POST['name'],$_POST['lname'],$_POST['address'])

2)您的存储过程需要5个参数,因此您需要传递5个参数。如果您还不知道值,则传递null或创建另一个存储过程。 有关存储过程的可选参数,请参阅此问题:Writing optional parameters within stored procedures in MySQL?