PHP mysql_fetch不返回值

时间:2010-05-27 06:01:34

标签: php mysql

作为PHP的新手,我找不到任何解决方案,为什么这不起作用。查询正常,并返回资源。但我不知道为什么fetch_assoc不打印值。感谢

$query=sprintf("SELECT ID,NAME FROM USERS WHERE PASS='%s' AND NAME='%s'",mysql_real_escape_string($p),mysql_real_escape_string($n));

$result=mysql_query($query);

if ($result)
 {

while ($row = mysql_fetch_assoc($result)) {
    echo $row['ID'];
    echo $row['NAME'];
}
}

}

3 个答案:

答案 0 :(得分:2)

一些简单的问题:

  • 您是否完成了var_dump($行)以查看它返回的内容?
  • 您确定您指定的名称和密码实际上在数据库中吗?
  • 您是否在数据库中加密了密码(而不是在查询中)?
  • 您是否拥有有效的数据库连接? (我知道答案是肯定的,但是双重检查不会伤害任何人,也许会让人头疼)

编辑:

  • 添加了var_dump手册页的链接。
  • 正如已经建议的那样,使用mysql_error()找出问题所在。 (一个简单的echo mysql_error();在$ result = mysql_query($ query)之后;就足够了)
  • 向下写出查询以查看转义是否出错。

答案 1 :(得分:0)

1.跳出你的$查询,看看它是否是你想用于调试目的的; 2.如果它们是真正的大写字母,请检查$ row ['ID']和['NAME']; 3.在if($ result){....} else {echo mysql_errno($ link)之后使用mysql错误报告。 “:”。 mysql_error($ link)。 “\ n” 个;其中$ link是你的数据库句柄。

答案 2 :(得分:0)

您确定已退回行吗?您可以使用mysql_num_rows($result)来计算。我能想到看你的代码的唯一方法就是你用纯文本传递密码,而DB中的版本是MD5或其他东西。