来自mysql数据库的PHP调用存储过程

时间:2019-02-06 23:27:18

标签: php mysql stored-procedures mysqli pdo

我想将数据库逻辑与PHP脚本分开。因此,我在mysql数据库中定义了一些存储过程。现在,我正在寻找一种从php内的mysql数据库中调用存储过程的可能性。首先,我使用PDO进行了尝试,然后使用mysqli进行了尝试,但没有找到任何有效的文档或示例。关于如何调用一个简单查询的文档太多了,但是关于存储过程却无济于事...

例如,我创建了以下程序:

delimiter $$
create procedure testIn (in i1 int)
begin
select * from videos;
end$$

delimiter $$
create procedure testOut (out i2 int)
begin
set i2 = 2;
end$$

(我不知道它们的真实含义,但仅用于测试)

我怎么称呼这个功能?

您能帮我吗,我正在搜索2天,直到现在。


编辑:

好吧,我在该线程中找到了解决方案:PHP -> PDO -> Prepare -> Call Procedure -> Insert Into -> Bind Parameters

问题是我直接在bindParam方法中插入了一个字符串,但是必须有一个变量,因为php通过引用将其绑定。那是关键!

第一种方法的工作方式如下:

$inPara = 5; //or what you want
$stmt = $db->prepare('CALL testIn(?)');
$stmt->bindParam(1, $inPara, PDO::PARAM_INT);
$stmt->excecute;

第二个是这样的

$stmt=$db->prepare('CALL testOut(@result)');
$stmt->execute();
$stmt=$db->query('SELECT @result');
while ($row = $stmt->fetch()){echo "Last result : " . $row['@result'];}

谢谢您的想法。如果有人在PHP Manuell中找到好的帮助,那将非常有帮助,因为所描述的准备好的语句比准备好的过程要多...

0 个答案:

没有答案