$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个其他字段。
答案 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?