我是这样绑定我的参数的:
$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的手册页上的用户评论包含了这个问题的确切答案。
你看,这个网站,虽然鼓励懒惰,并不总是回答你的问题比好的老谷歌和手册可以。