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

标签 php mysql stored-procedures

我的存储过程有 4 个输入类型参数。当我在 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$$

编辑:

http://bugs.mysql.com/bug.php?id=15975

虽然该请求已有 9 年之久,但仍未完成。

关于php - 如何使用可选参数调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25158793/

相关文章:

php - mySQL INSERT with TRIGGER 的计时问题

javascript - 将多个输入值作为不同行插入不同表中

php - 用给定的索引替换 php 数组中的值

php - 使用 CSS 对齐图像

mysql - Yii 查询优化 MySQL

java - Mysql 插入存储过程比 Java JDBC 慢

c# - Entity Framework 存储过程异常

mysql - "SHOW ERRORS"在存储过程中不起作用(Percona Server 5.6.26-74.0)

php - 'Location' header 在 PHP 中根本不起作用

php - 如何在 Yii 数据库管理系统中更改数据库字符集