Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 如何使用可选参数调用存储过程_Php_Mysql_Stored Procedures - Fatal编程技术网

Php 如何使用可选参数调用存储过程

Php 如何使用可选参数调用存储过程,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,我的存储过程有4个In-type参数。在php mysql中调用存储过程时,我只想使用3个参数 我的存储过程是 DELIMITER $$ CREATE PROCEDURE `usptregister` ( IN ID bigint, IN name varchar(100), IN email varchar(100), IN phoneno varchar(15) ) BEGIN Insert INTO register (id,fname, emailid, phone)

我的存储过程有4个In-type参数。在php mysql中调用存储过程时,我只想使用3个参数

我的存储过程是

DELIMITER $$

CREATE PROCEDURE `usptregister`
(
 IN ID bigint, 
 IN name varchar(100), 
 IN email varchar(100),
 IN phoneno varchar(15)
)

BEGIN

Insert INTO register
(id,fname, emailid, phone) values 
(id,name , email ,phone)  ;
END
我调用的php代码只传递3个参数的存储过程

$call = mysql_query("CALL usptregister('0','".$_POST[name ]."','".$_POST[email ]."') ");
当我在调用存储过程时传递相同数量的参数时,此代码正在工作。
我是存储过程新手。请帮助我。

MySQL不支持可选参数

我建议您将第四个参数传递为
null
。然后在该过程中,您可以检查是否为
null

BEGIN
   IF param IS NULL THEN 
      -- statements ;
   ELSE 
      -- statements ;
   END IF;
END$$
编辑:


虽然请求已经9年了,但仍然没有完成。

您不能将第四个参数作为null传递吗?它会起作用,但是如果您没有这么多参数,那么这个技巧将不起作用。我不需要传递空值或字符串。通过对每个参数使用你的技巧,我必须使用if和else条件。如果你有超过30个参数,那么你必须一次又一次地写入它。我为大型batabase制作了它。没有其他选项可以这样做,否则你必须为每种情况编写一个过程。