是否有可能在绑定参数mysqli的存储过程?(Is it possible to bind para

2019-09-20 16:25发布

我一直在存储过程和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");

Answer 1:

结合参数是一个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()方法。

因此,要回答你的问题:是的,有可能在同一时间同时使用(因为它们是不同的东西),但不是在你想象的方式,这将是多余的。



文章来源: Is it possible to bind parameters to stored procedure in MYSQLi?