如何绑定参数多次与mysql


How to bind param multiple times with MySQLI?

我是这样绑定我的参数的:

$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的两次调用时,它工作得很好
mysql_stmt_bind_param("ss",$Username,$Email)

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

您的方法不起作用,因为使用mysqli_stmt_bind_param的正确方法正是如下:

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

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

可以知道参数的个数,从而创建count()数组。

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

我强烈建议切换到PDO

$stmt = $pdo->prepare('select * from users where name=? and email=?');
$stmt->execute($numericArrayOfParameters);

有点跑题,但我觉得它足够重要。

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

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