私は自分のブログにログインしようとすると失敗した回数を記録しておきたいと思います。失敗したログインのインテントを保存しようとすると、次のエラーが発生します。C:\ xampp \ htdocs \ Blog \ users \ login.phpのbooleanのメンバー関数bind_param()を呼び出します。失敗したログインのインテントを挿入するには
ここには問題があるコード...
// code when the login is correct...
} else {
// incorrect password.
// so we save this failed intent
//we make a query to get the actual user's intent
$num_attempts = $conexion->prepare("SELECT session_attemps FROM usuarios WHERE id = ? LIMIT 1");
$num_attempts->bind_param('i', $user_id);
$num_attempts->execute();
$num_attempts->bind_result($attempts);
$num_attempts->fetch();
$attempt= $attempts+1;
//and then we insert that value plus one (the actual failed intent)
$add_attempt=$conexion->prepare("INSERT INTO usuarios(session_attemps) VALUES (?) WHERE id = $user_id");
$add_attempt->bind_param('i', $attempt);
$login_error_message="login data is incorrect";
echo json_encode(array('success' => false, 'text' => $login_error_message));
return false;
}
ライン70は、に対応:$ add_attempt-> bind_param( 'i' は、$のUSER_ID)。
が、私はmysqlのコンソールで(通常またはデフォルト値を使用して)クエリをテストするとき、それはエラーにid = ...
ok私はこの説明のおかげで問題を解決することができました:「コマンドが同期していません」という問題は、手続きによって残された未使用の結果セットが原因です。最初のプロシージャを呼び出すと、結果セットは使用するまでバッファリングされます。ただし、1つのセットのみを使用し、2番目のクエリに移動する前に解放していません。移動する前に、バッファリングされた結果セットを解放する必要があります。 これを行うには、関数またはメソッドを作成することをお勧めします。コードを何度も何度も繰り返す必要はありません。最後に$ variable-> close()を使って前の手順をフリーズしなければならなかった – kukiko11