我想将数据库逻辑与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中找到好的帮助,那将非常有帮助,因为所描述的准备好的语句比准备好的过程要多...