【发布时间】:2014-08-05 12:11:22
【问题描述】:
$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 个其他字段。
【问题讨论】:
-
你能格式化你的问题吗?
-
bind_params() 和 spuser() 之间存在参数不匹配。
-
1. spuser() - 声明和调用时参数数量不匹配。
-
2. bind_params - 如果提供给绑定的参数,则此处也与数字不匹配。