2013-03-19 88 views
1

有人请指出我出错的地方。更新mysqli错误

我试着按照如何执行update-with-mysqli-prepare给出的建议?在网站上,但没有运气。

以下:

<?php 

//connection 
$con = new mysqli ("localhost","user","password","db"); 

$playno = "22"; 
$n1 = "4"; 
$n2 = "4"; 
$n3 = "4"; 

$stmt = $con -> prepare("UPDATE game SET no1 = ?, no2 = ?, no3 = ? WHERE id = ?"); 

$stmt -> bind_param ('iiii',"$n1","$n2","$n3","$playno"); 
$stmt -> execute(); 


?> 

在浏览器中给出了这样的:

Fatal error: Cannot pass parameter 2 by reference in C:\xampp\htdocs... on line 13

提前非常感谢。

回答

2
$stmt -> bind_param ('iiii',$n1,$n2,$n3,$playno); 
+0

非常感谢您! – user2184481 2013-03-19 00:16:58

0

该错误表示bind_param中的第二个参数应该是对变量的引用。

$stmt -> bind_param ('iiii',"$n1","$n2","$n3","$playno"); 

this

Note that mysqli_stmt_bind_param() requires parameters to be passed by reference

它应该是:$stmt -> bind_param ('iiii',$n1,$n2,$n3,$playno);

0

当您尝试通过PARAMS如下

$stmt -> bind_param ('iiii',"$n1","$n2","$n3","$playno"); 

"$n1"等被视为常数字符串,因此导致错误(而不是警告)。

此外,您需要传递整数值而不是字符串。

$stmt -> bind_param('iiii',$n1, $n2, $n3, $playno); 
0
$stmt -> bind_param ('iiii',"$n1","$n2","$n3","$playno"); 

应该

$stmt -> bind_param ('ssss',$n1,$n2,$n3,$playno); 

$playno = 22; 
$n1 = 4; 
$n2 = 4; 
$n3 = 4; 

$stmt -> bind_param ('iiii',$n1,$n2,$n3,$playno); 
-1

你的问题很简单:

这是一个字符串 $ playno = “22”; // string $ n1 =“4”; // string $ n2 =“4”; // string $ n3 =“4”; //字符串

$stmt = $con -> prepare("UPDATE game SET no1 = ?, no2 = ?, no3 = ? WHERE id = ?"); 

这里你的错误 $语句 - > bind_param( 'IIII', “$ N1”, “$ N2”, “$ N3”, “$ playno”); //失败,您必须使用s $ stmt - > bind_param('ssss',$ n1,$ n2,$ n3,$ playno); //这是正确的

或变化:

$playno = 22; //integer 
$n1 = 4; //integer 
$n2 = 4; //integer 
$n3 = 4; //integer 
$stmt -> bind_param ('iiii',$n1,$n2,$n3,$playno); //this is correct 

然后:

$stmt -> execute();