0

EXISTS構文を使用して、行が存在するかどうかを確認しようとしています。connect()関数は(少なくとも他のすべての関数では)機能していますが、この関数は常にfalseを返します。phpMyAdminを試してみると、クエリでtrueまたはfalseが返されます。だから私の質問に; PHPで答えを読む方法は?いくつかのベンチマークテストを読んだので、通常のSELECTステートメントを使用したくありません。魔女はこの方法の方が速いと言っています。

function isOnline($userid){
    $conn = connect();
    $query = "SELECT EXISTS (SELECT 1 FROM `usersonline` WHERE userid=$userid);";
    return mysql_query($query, $conn) ? false : true;
}
4

3 に答える 3

3

このmysql_query関数は、クエリが正常に実行されたかどうかのみを示します。おそらく、返されたデータの最初の行を読み取り、mysql_fetch_rowそれが真か偽かを判断する必要があります。

また、mysql_* 関数は現在非推奨であり、新しい PDO または mysqli_* 関数に移行する必要があることを理解してください。

于 2012-09-26T16:42:24.307 に答える
0
function isOnline($userid){
    $conn = connect();
    $query = mysql_query("SELECT `id` FROM `usersonline` WHERE userid=$userid");
    $row = mysql_num_rows($query)
    return if(row>=1) ? true : false;
}

あなたはこれを使うことができます

于 2012-09-26T16:47:04.293 に答える
0

falseクエリは常に成功するため、関数は常に返されます。

クエリの結果セットから結果を取得し、それをテストする必要があります。

于 2012-09-26T16:43:01.910 に答える