5

这就是我绑定参数的方式:

$Con = mysqli_connect(...);
$Statement = mysqli_stmt_init($Con);

mysqli_stmt_prepare($Statement,"select * from users where name=? and email=?");
mysqli_stmt_bind_param("s",$Username);
mysqli_stmt_bind_param("s",$Email); <-- it fails here

但在另一种情况下,当我将 mysqli_stmt_bind_param 的 2 个调用替换为:

mysql_stmt_bind_param("ss",$Username,$Email)

问题是我有一个参数数组;我必须一一绑定因为我不知道参数的数量

4

3 回答 3

5

您的方法不起作用,因为使用 mysqli_stmt_bind_param 的正确方法是完全遵循:

mysql_stmt_bind_param("ss",$Username,$Email)

参考:http : //php.net/manual/en/mysqli-stmt.bind-param.php

要知道参数的数量,请创建一个 count() 数组。

于 2011-11-02T12:33:59.897 回答
4

MySQLi 的语句绑定确实不适合可变数量的参数。

我强烈建议切换到 PDO

$stmt = $pdo->prepare('select * from users where name=? and email=?');
$stmt->execute($numericArrayOfParameters);
于 2011-11-02T12:32:52.673 回答
-2

有点离题,但我觉得这很重要。

mysql_stmt_bind_param 手册页中最近的用户评论包含对这个问题的确切答案。

你看,这个网站虽然鼓励懒惰,但并不总是比旧的谷歌和手册更好地回答你的问题。

于 2011-11-02T12:43:27.227 回答