为什么我没有得到这个代码的任何结果?

时间:2012-12-17 14:41:03

标签: php mysql select

是不允许在mysql中一次取一个特定的行,你需要SELECT * 每一次

请告诉我这段代码有什么问题

$result = mysql_query("SELECT email_id
FROM user 

WHERE  email_id =  '$loginid'
AND  password =  '$loginpassword'") or die(mysql_error());

$row = mysql_fetch_array( $result );
echo $row['email_id'];

3 个答案:

答案 0 :(得分:1)

试试这个

     $result = mysql_query("SELECT email_id  FROM user 

                          WHERE  email_id =  '".$loginid."'
                        ") or die(mysql_error());

        $row = mysql_fetch_array( $result );
       echo $row['email_id'];

您不必使用密码进行检查,也许密码经过哈希处理或编码,很难从变量中获取值。由于你有email_id足够,它的独特之处。 所以这应该可以胜任。

obs:尝试使用PDO。防止sql注入

答案 1 :(得分:0)

1)如果要选择特定列,可以使用所需列重新加载*。 例如:

SELECT email_id FROM user 

检查here

2)email_id可能是一个数值,你必须删除引用:

SELECT * FROM user WHERE  email_id = $loginid AND  password =  '$loginpassword'

检查here

3)您的代码容易受到SQL注入攻击。尝试使用像PDO这样的东西。

修改

4)要在MySQL中选择一行,请使用LIMIT:

SELECT * FROM user WHERE  email_id = $loginid AND  password =  '$loginpassword' LIMIT 1

检查here

答案 2 :(得分:0)

您可能会从查询中获得多行。如果只需要一行,请将LIMIT 1添加到查询字符串的末尾。但除此之外,如果此查询失败,则是因为数据相关问题,并且为了调试我们需要查看查询字符串中包含的数据。这将使您能够看到重要信息。

$sql = "SELECT email_id FROM user WHERE  email_id = '$loginid' AND password = '$loginpassword' LIMIT 1";
$res = mysql_query($sql) or die("FAIL: $sql BECAUSE: " . mysql_error());
$row = mysql_fetch_assoc($res);
echo $row['email_id'];

请注意,查询字符串是在其自己的变量中单独创建的。如果你在函数调用中创建它,你将失去可视化它的能力,所以我总是建议像这样创建查询字符串。 HTH,~Ray