是不允许在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'];
答案 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