0
    // check if user exists
        $query = "SELECT playerID FROM PLAYERS where steamid = ? LIMIT 1";
            if (mysqli_stmt_prepare($stmt, $query)) {
                echo "Steamid: $in_steamID...<br />";
                mysqli_stmt_bind_param($stmt, 's', $in_steamID);
                mysqli_stmt_bind_result($stmt, $out_playerID);
                mysqli_stmt_execute($stmt);
                if (mysqli_stmt_fetch($stmt)) {
                    $in_playerID = $out_playerID;
                }
            }
            echo ("Player ID: $in_playerID  <br />");

基本的に、私がやろうとしていることは次のとおりです。

  1. いくつかのログファイルからいくつかのデータを解析し、それらを変数に保存します->>ここでは問題ありません
  2. クエリを介してこのデータをデータベースに送信します

問題は、コードタグに含めたクエリです。次のことを行う必要があります。

  1. データベースをチェックして、現在の SteamID がデータベースに playerID を持っているかどうかを確認します。

問題は、行がまったく返されない場合でも、実際に何を返す必要があるかに関係なく、クエリが常に 1 を返すように見えることです。理由がわかりません。

PHPスクリプトの外でこのSQLステートメントを実行しましたが、完全に機能します...

変数を何度もデスクでチェックし、スクリプトの実行時にそれらを出力して、正しい値が含まれていることを確認しました...そして、そうです! 私は今どうすればいい?

どんな助けでも大歓迎です。

4

1 に答える 1

0

行が返されない場合、変数 $in_playerID に値が与えられることはありません。デフォルトでは、$in_playerID には 1 が含まれているように見えました。これは、ランダムなメモリ アドレスの内容であるに違いないとしか思えません。

これを修正するために、単純にクエリの上で $in_playerID を宣言しました。

$in_playerID = 0;

于 2012-10-11T01:20:36.403 に答える