Num строк возвращает неправильное число - PullRequest
2 голосов
/ 31 октября 2011

Я пытаюсь посчитать строки, где есть 0 строк, но в любом случае возвращает 1 строку, когда нет строк, соответствующих запросу SQL.Кто-нибудь знает, что я делаю не так?

        $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();
        }

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

Запрос всегда возвращает одну строку. Строка содержит количество строк. Лучше использовать 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']."'";

Я бы настоятельно рекомендовал использовать первую альтернативу, потому что этот более простой способ вернет ВСЕ строки и, следовательно, будет менее эффективным.

3 голосов
/ 31 октября 2011

Вы считаете уже в sql запросе. Это всегда возвращает один ряд. Даже если в таблице базы данных есть ноль строк. Есть два способа сделать это:

  1. SELECT COUNT(*) FROM ... и все. Больше нет необходимости в функции mysql_num_rows(). Если все, что вы хотите сделать, это получить количество строк, то этот путь быстрее.
  2. SELECT * FROM ..., и вы можете использовать функцию mysql_num_rows(). Если вы все равно хотите получить все строки для отображения в таблице, а также сосчитать их, то это путь.
...