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 の参照によってパラメーター 2 を渡すことはできません... 13 行目

4

5 に答える 5

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

エラーは、の2番目の引数が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");

する必要があります

$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 に答える
0

次のようにパラメータを渡そうとすると

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

などは"$n1"定数文字列として扱われるため、エラーが発生します(警告ではありません)。

また、文字列ではなく整数値を渡す必要があります。

$stmt -> bind_param( 'iiii',$n1, $n2, $n3, $playno );
于 2013-03-19T00:17:27.393 に答える
-1

あなたの問題は簡単です:

これは文字列です $playno = "22"; //string $n1 = "4"; //string $n2 = "4"; //string $n3 = "4"; //ストリング

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

ここであなたの間違い $stmt -> bind_param ('iiii',"$n1","$n2","$n3","$playno"); $stmt -> bind_param ('ssss',$n1,$n2,$n3,$playno); //失敗します。s $stmt を使用する必要があります。//正解です

または変更:

$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 に答える