1

我试图遵循-how-to-perform-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();


?>

在浏览器中给出这个:

致命错误:无法通过 C:\xampp\htdocs... 第 13 行中的引用传递参数 2

4

5 回答 5

2
$stmt -> bind_param ('iiii',$n1,$n2,$n3,$playno);
于 2013-03-19T00:15:01.567 回答
0

该错误意味着 in 的第二个参数bind_param应该是对变量的引用。

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

从此:_

注意mysqli_stmt_bind_param() 要求参数通过引用传递

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

于 2013-03-19T00:16:10.337 回答
0

当您尝试按如下方式传递参数时

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

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

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

$stmt -> bind_param( 'iiii',$n1, $n2, $n3, $playno );
于 2013-03-19T00:17:27.393 回答
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);
于 2013-03-19T00:22:46.770 回答
-1

你的问题很简单:

这是一个字符串 $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"); //失败,必须使用 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();
于 2013-04-29T20:00:21.140 回答