mysql_num_rows()有什么问题?

时间:2010-01-09 01:06:39

标签: php mysql

我有这个代码来获取朋友已经通过消息向某人发送消息的用户名。 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 个答案:

答案 0 :(得分:4)

尝试回显查询并查看ID是否正确放置,然后确保这样的ID实际存在,然后,在执行查询后运行echo mysql_error()以查看是否存在任何错误。这应该涵盖所有基础,并为您提供所需的答案。

答案 1 :(得分:4)

在检查行数之前,请检查查询是否成功:

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

// Check the number of rows
if (mysql_num_rows($result) > 0) {

答案 2 :(得分:3)

您根本不必使用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";
    }

编辑:另外,你不必逃脱字符串:“。$ userid。” ...这就是你使用“str”形式而不是'str'的原因。

答案 3 :(得分:1)

我很久没有使用过mysql了,所以请原谅我,如果我知道的话。

在我看来,你的约束是检查列id是否等于字符串

'".$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

答案 4 :(得分:0)

您可以检查查询是否存在mySQL错误。可能连接到数据库时出现问题。

过去,我常常忘记在连接后选择数据库。

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

答案 5 :(得分:0)

像这样的问题的全球解决方案

尝试:

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

并在phpmyadmin-> SQL中运行显示的值,检查它是否有效?