我在网上看过一些关于使用PHP Prepared Statements和MySQLi的教程。有些人正在使用mysqli_stmt mysqli::stmt_init()
之类的:
$stmt = $mysqli->stmt_init();
调用prepare()
以及预备语句的其他属性和方法
有些不像
那样初始化if ($stmt = $mysqli->prepare("INSERT INTO CodeCall (FirstName, LastName) values (?, ?)")) {}
现在我的问题是,是否有必要初始化要使用的对象?
由于
答案 0 :(得分:2)
不,没有必要。我一直使用MySQLi,从未使用过该方法。您可以像在这些示例中看到的那样使用mysqli::prepare
。
分配并初始化适用于mysqli_stmt_prepare()的语句对象。
在调用mysqli_stmt_prepare()之前,对任何mysqli_stmt函数的任何后续调用都将失败。
所以听起来这就是"手册"创建预准备语句的方法,因为它需要更多步骤。另一个mysqli::prepare
方法只需一步即可处理。
答案 1 :(得分:1)
可能是必要的。我最近遇到了一个问题,我这样做:
<Highlighter searchWords={[this._input]} textToHighlight={value} />
这适用于我的本地虚拟机。它适用于我们的登台服务器。但它拒绝在我们为客户端设置的服务器上进行测试。客户端的这个服务器是登台服务器的精确克隆,所以它应该有效。经过调试后,我发现$ stmt从未初始化,所以当$ stmt-&gt; execute()时,应用程序总是会爆炸。被叫了。
但是手动操作所有服务器和本地服务器:
$stmt = $mysqli->prepare
我不知道为什么第一种方法不能始终如一地工作。感觉像分享,似乎相关。