我一直在阅读存储过程&来自这里的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");
答案 0 :(得分:0)
绑定参数是PHP端操作;存储过程是MySQL的事情。这两者没有关系,不应该这样对待。
使用预准备语句和参数绑定,您可以使用prepare()
方法定义查询,然后使用?
将值绑定到bind_param()
。因此,给出您的示例,预准备语句方法将如下所示:
$stmt = $mysqli->prepare("INSERT INTO test (id) VALUES (?)");
$stmt->bind_param('i', $some_int);
$stmt->execute();
另一方面,使用存储过程,您只需将其称为using the CALL
command作为普通查询:
//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()
。
所以回答你的问题:是的,可以同时使用两者(因为它们是不同的东西),但不是你想象的方式,而且是多余的。