我有这个代码来获取朋友已经通过消息向某人发送消息的用户名。 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";
}
}
答案 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
确实是一个字符串。
我希望这会有所帮助。
答案 4 :(得分:0)
您可以检查查询是否存在mySQL错误。可能连接到数据库时出现问题。
过去,我常常忘记在连接后选择数据库。
答案 5 :(得分:0)
像这样的问题的全球解决方案
尝试:
$sql = "SELECT username FROM user WHERE `id` = '".$userid."' LIMIT 1";
echo "Query=$sql";
并在phpmyadmin-> SQL中运行显示的值,检查它是否有效?