这就是我约束我的参数:
$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)
问题是我有一系列参数;我必须逐个绑定它们因为我不知道参数的数量
答案 0 :(得分:5)
您的方法不起作用,因为正确使用mysqli_stmt_bind_param的正确方法如下:
mysql_stmt_bind_param("ss",$Username,$Email)
参考:http://php.net/manual/en/mysqli-stmt.bind-param.php
知道参数的数量使得count()数组。
答案 1 :(得分:4)
MySQLi的语句绑定确实不适合可变数量的参数。
我强烈建议您切换到PDO
$stmt = $pdo->prepare('select * from users where name=? and email=?');
$stmt->execute($numericArrayOfParameters);
答案 2 :(得分:-2)
有点offtopic但我觉得它很重要。
mysql_stmt_bind_param手册页中最近的一条用户评论包含了这个问题的确切答案。
你知道,这个网站虽然鼓励懒惰,但并不总是比老谷歌和手册更能回答你的问题。