Что не так с mysql_num_rows ()? - PullRequest
       5

Что не так с mysql_num_rows ()?

0 голосов
/ 09 января 2010

У меня есть этот код, чтобы получить имя пользователя, с которым друг отправил сообщение пользователю из сообщения .mysql_num_rows не работает, и мои имена пользователей отображаются как неизвестные.Это как-то связано с mysql_num_rows()?

function getusername($userid) {
    $sql = "SELECT username FROM user WHERE `id` = '".$userid."' LIMIT 1";
    $result = mysql_query($sql);
    // Check if there is someone with this id
    if(mysql_num_rows($result)) {
        // if yes get his username
        $row = mysql_fetch_row($result);
        return $row[0];
    } else {
        // if not, name him Unknown
        return "Unknown";
    }
}

Ответы [ 6 ]

4 голосов
/ 09 января 2010

Перед проверкой количества строк убедитесь, что запрос выполнен успешно:

$result = mysql_query($sql);
if (!$result)
{
     error();  // whatever needs to be done
     return;
}

// Check the number of rows
if (mysql_num_rows($result) > 0) {
4 голосов
/ 09 января 2010

Попробуйте повторить запрос и посмотреть, правильно ли введен идентификатор, затем убедитесь, что такой идентификатор действительно существует, а затем, после выполнения запроса, запустите echo mysql_error(), чтобы проверить, не было ли ошибок. Это должно охватывать все основы и дать вам необходимый ответ.

3 голосов
/ 09 января 2010

Вам вовсе не обязательно использовать mysql_num_rows (). визави:

   function getusername($userid) 
   {
        $sql = "SELECT username FROM user WHERE `id` = '$userid' LIMIT 1";
        $result = mysql_query($sql);
        // Check if there is someone with this id
        if ( $result && ($row = mysql_fetch_row($result)) )
            return $row[0];
        else 
            // if not, name him Unknown
            return "Unknown";
    }

edit: также вам не нужно выходить из строки: ". $ Userid." ... именно поэтому вы использовали форму "str" ​​вместо "str".

1 голос
/ 09 января 2010

Я давно не работал с mysql, так что простите меня, если я беспокоюсь.

Мне кажется, что ваше ограничение проверяет, равен ли идентификатор столбца строке

'".$userid."'

Если id является каким-то целым числом, эта проверка может завершиться неудачно. (опять же, я могу ошибаться, но какой вред пытаться?)

Вы можете попытаться изменить запрос на чтение

$sql = "SELECT username FROM user WHERE `id` = ".$userid." LIMIT 1";

, если id не является действительно строкой.

Надеюсь, это поможет.

http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

0 голосов
/ 09 января 2010

Глобальное решение таких проблем

попробуй:

$sql = "SELECT username FROM user WHERE `id` = '".$userid."' LIMIT 1"; 
echo "Query=$sql";

и запустите отображаемое значение в phpmyadmin-> SQL, проверьте, работает ли оно?

0 голосов
/ 09 января 2010

Вы можете проверить, была ли ошибка MySQL для запроса. Возможно, возникла проблема с подключением к базе данных.

Раньше я раньше забывал выбирать базу данных после подключения.

http://www.php.net/manual/en/function.mysql-error.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...