2012-02-08 69 views
1

当我做查询以下时我可以做密码检查和密码,它的工作原理。 当我尝试提取称为id的行ID时,它会返回0,当它应该是别的。当我用相同的方式打印密码时,它会打印两位数字,而不是我希望的字符串。mysql_fetch_assoc()给我错误的值

我或多或少是一个初学者到PHP,但也许有人可以看到我的代码有什么问题?

$sql = 'SELECT pass FROM tbl_user WHERE email = "'.$email.'" LIMIT 1 ;'; 
$selection = mysql_query($sql); 

$r = mysql_fetch_assoc($selection); 
$user_id = $r['id']; 
print "user id is: " + $r['id']; 
print "user id is: " + $r['pass']; 
+3

请注意,使用LIMIT时,建议同时指定ORDER BY,以便您的结果可预测。 'ORDER BY ID LIMIT 1' – 2012-02-08 14:36:33

+2

理论上'LIMIT'将是多余的,因为我假设'email'在这种情况下应该是唯一的。 – Wiseguy 2012-02-08 14:38:29

回答

5

您只是SELECT的密码。您的查询更改为

$sql = 'SELECT id, pass FROM tbl_user WHERE email = "'.$email.'" LIMIT 1 ;'; 

至于打印出来,而不是使用print,使用echo。此外,而不是+,使用.加盟串在一起:

echo "user id is: " . $r['id']; 
echo "user id is: " . $r['pass']; 
+0

谢谢,就是这样。如有可能,我会在6分钟内将其标记为正确答案。 另一个问题,我正在检查应用程序而不是浏览器的响应。你是否仍然认为回声是显示回应的更好选择? – 2012-02-08 14:43:20

+1

'echo'和'print'是相同的,除了'print'返回真/假是否设法打印出来 - 在几乎所有的情况下,“能够输出某些东西”都是给定的,所以'echo'用来。如果'print'有合理的机会可能会失败,请使用'print'并且您可以检查以确保它成功。 – Joe 2012-02-08 14:56:32

3

您只能选择pass,而不是id

使用此查询:

$sql = 'SELECT id, pass FROM tbl_user WHERE email = "'.$email.'" LIMIT 1 ;'; 
3

你只能选择pass在你的查询中;所以id不返回。