我如何在php中调用存储过程?

时间:2017-05-11 08:06:51

标签: php json stored-procedures

我想在php中使用存储过程来插入语句。

我创建了一个sp,现在我想在我的php文件中调用它。

下面是我的sp:

DELIMITER $$
DROP PROCEDURE IF EXISTS `radiolocous`.`insert_gmr`$$
CREATE PROCEDURE `storedproc_test`.`insert_gmr`
(
IN version varchar(250),
IN visitorId VARCHAR(250),
IN dwellTime VARCHAR(250),
IN poiId VARCHAR(250),
IN srId VARCHAR(250),
IN zoneId VARCHAR(250),
IN poiProximityConfidence VARCHAR(250),
IN zoneProximityConfidence VARCHAR(250),
IN poiPresenceConfidence VARCHAR(250),
IN zonePresenceConfidence VARCHAR(250),
IN normalizedTime VARCHAR(250)
)
BEGIN


INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime)
values(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime);
END $$
DELIMITER;

我的插入语句类似于:

$result = db_query("INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime)
                                VALUES ('" . implode("', '", $array) . "')")
                                or die('Connect Error: ' . mysqli_connect_error());

我如何在我的php中调用sp,因为我在json中接收值,我没有手动插入,但我已经将sp参数作为 IN

这是对的吗?

我试过了:

$result = db_query("CALL insert_gmr('" . implode("', '", $array) . "')") or die('Connect Error: ' . mysqli_connect_error());

我收到Connect错误,没有任何描述。

我的sp中的问题或我在php中调用的方式?

1 个答案:

答案 0 :(得分:3)

我认为你的错误在于你试图打电话给你的程序。

在你的情况下你应该做那样的事情:

$result = db_query("CALL insert_gmr('".implode("', '", $array). "')"))

这样你的调用是正确的,只要$ array中的值与存储过程中的参数一样多

要了解有关在PHP中使用存储过程的更多信息,请参阅文档:http://php.net/manual/en/mysqli.quickstart.stored-procedures.php