web-dev-qa-db-ja.com

PHPでbind_param()ステートメントを実行するには?

次のコードを機能させようとしていますが、execute()行に到達できません。

_$mysqli = $this->ConnectLowPrivileges();
echo 'Connected<br>';
$stmt = $mysqli->prepare("SELECT `name`, `lastname` FROM `tblStudents` WHERE `idStudent`=?");
echo 'Prepared and binding parameters<br>';
$stmt->bind_param('i', 2 );
echo 'Ready to execute<br>'
if ($stmt->execute()){
    echo 'Executing..';
    }
} else {
    echo 'Error executing!';
}
mysqli_close($mysqli);
_

私が得る出力は:

_Connected
Prepared and binding parameters
_

したがって、問題は5行目にあるはずですべきですが、 manual of bind_param() をチェックすることはできませんそこで構文エラーを見つけます。

9
Lucio

パラメータをバインドするとき、参照として使用される変数を渡す必要があります。

$var = 1;

$stmt->bind_param('i', $var);

マニュアルを参照してください: http://php.net/manual/en/mysqli-stmt.bind-param.php

ご了承ください $varバインドするために実際に定義する必要はありません。以下は完全に有効です。

$stmt->bind_param('i', $var);

foreach ($array as $element)
{

    $var = $element['foo'];

    $stmt->execute();

}
13
MichaelRushton

ここでは単に説明です
バインドする変数を宣言します

    $var="email";
$mysqli = $this->ConnectLowPrivileges();
echo 'Connected<br>';

$var="email";
$stmt = $mysqli->prepare("SELECT name, lastname FROM tablename WHERE idStudent=?" LIMIT=1);
echo 'Prepared and binding parameters<br>';
$stmt->bindparam(1,$var); 
0
x00