2

行が0行ある行を数えようとしていますが、SQLクエリに一致する行がない場合は、とにかく1行を返します。誰かが私が間違っていることを知っていますか?

        $del = mysql_real_escape_string(strip_tags($_GET['del']));

    if ($del)
    {
        $sql6 = "SELECT count(*) FROM oneliners WHERE id='$del' AND to_user='".$_SESSION['username']."'";
        $result6 = mysql_query($sql6) or trigger_error(mysql_error()."".$sql6);
        $num_rows6 = mysql_num_rows($result6);

        echo $sql6;
        echo '<br>';
        echo $num_rows6;

        //If no rows return, do this
        if ($num_rows6 <= 0)
        {
            header("location:oneliner.php");
            exit();
        }
4

2 に答える 2

4

クエリは常に 1 行を返します。行には行数が含まれます。mysql_fetch_rowよりもむしろ使用する必要がmysql_num_rowsあります。後者は、クエリによって返される行数をカウントします。

$sql6 = "SELECT count(*) FROM oneliners WHERE id='$del' AND to_user='".$_SESSION['username']."'";
$result6 = mysql_query($sql6) or trigger_error(mysql_error()."".$sql6);
if($num_rows6 = mysql_fetch_row($result6)) {
   echo $num_rows6[0]; // Prints the number of rows
}

問題を解決する最も簡単な方法は、クエリを次のように変更することですが。

$sql6 = "SELECT * FROM oneliners WHERE id='$del' AND to_user='".$_SESSION['username']."'";

この簡単な方法ではすべての行が返されるため、効率が低下するため、最初の方法を使用することを強くお勧めします。

于 2011-10-31T16:37:21.027 に答える
3

あなたはすでにSQLクエリで数えています。それは常に1行を返しています。データベーステーブルに行がない場合でも。それには 2 つの方法があります。

  1. SELECT COUNT(*) FROM ...以上です。機能はもう必要ありませんmysql_num_rows()。行数を取得することだけが目的の場合は、この方法の方が高速です。
  2. SELECT * FROM ...機能を使用することができますmysql_num_rows()。とにかくテーブルに表示するためにすべての行を取得し、それらをカウントしたい場合は、これが方法です。
于 2011-10-31T16:38:24.460 に答える