我一直在存储过程和mysqli的从这里读了http://php.net/manual/en/mysqli.quickstart.stored-procedures.php
和其他来源,但我仍然不确定如何调用存储过程?
(就像一个准备好的声明)
是否有可能参数绑定到一个存储过程中,类似的东西,以这样的:
$mysqli->query("CREATE PROCEDURE p(IN id_var INT) BEGIN INSERT INTO test(id)
VALUES(id_var); END;"))
$mysqli->bindParam("i", $some_int);
$mysqli->query("CALL p");
结合参数是一个PHP侧操作; 存储过程是一个MySQL的事情。 这两个不相关的,不应该被如此对待。
与准备的语句和参数结合,可以定义使用的查询prepare()
方法,然后将值绑定到?
s,使用bind_param()
因此,考虑你的榜样,一个准备语句的方法是这样的:
$stmt = $mysqli->prepare("INSERT INTO test (id) VALUES (?)");
$stmt->bind_param('i', $some_int);
$stmt->execute();
在另一方面,存储过程,你只需把它用CALL
指令作为一个正常的查询:
//procedure created beforehand
CREATE PROCEDURE p(IN id_var INT)
INSERT INTO test (id)
VALUES (id_var);
//now in PHP:
$mysqli->query("CALL p($some_int)");
我不能肯定是否可以运行一个CREATE PROCEDURE
使用query()
方法。
因此,要回答你的问题:是的,有可能在同一时间同时使用(因为它们是不同的东西),但不是在你想象的方式,这将是多余的。