Php 为什么我在这个代码中没有得到任何结果?
mysql中是否不允许一次获取特定行wwe需要选择* 每一次 请告诉我这个代码有什么问题Php 为什么我在这个代码中没有得到任何结果?,php,mysql,select,Php,Mysql,Select,mysql中是否不允许一次获取特定行wwe需要选择* 每一次 请告诉我这个代码有什么问题 $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']; 1如果
$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'];
1如果要选择特定列,可以使用所需列重新放置*。 例如:
SELECT email_id FROM user
检查
2电子邮件id可能是一个数值,您必须删除报价:
SELECT * FROM user WHERE email_id = $loginid AND password = '$loginpassword'
检查
3您的代码易受SQL注入攻击。尝试使用类似PDO的东西
编辑
4要在MySQL使用限制中选择一行:
SELECT * FROM user WHERE email_id = $loginid AND password = '$loginpassword' LIMIT 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'];
您不必使用密码进行检查,可能密码是散列或编码的,很难从变量中获取它的值。因为你有足够的电子邮件id,它是独一无二的。
所以这应该可以完成任务
obs:尝试改用PDO。要防止sql注入您可能会从查询中获得多行。如果只需要一行,请将限制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'];
请注意,查询字符串是在其自己的变量中单独创建的。如果您在函数调用中创建它,您将失去可视化它的能力,因此我始终建议您这样创建查询字符串。嗯,~Ray嗯。。。从…中选择电子邮件\u id。。。?还是要从结果中提取多行?而$row=mysql\u fetch\u数组。。。{…}?'user'提到了@marcbw这个代码有什么问题?它使用了一个不推荐使用的MySQL API;请打开错误报告:ini_设置“显示错误”,1;错误报告全部;您也可以只回显$loginid,因为它始终等于email_id;除此之外,转储从数据库返回的数据并将其发布到此处,然后停止使用不推荐使用的用于MySQL操作的api!!不,它不容易被注入,我没有插入任何东西,我想你是指列而不是行,我想一次只取一行,那么有可能吗@Geeeleaf你能编辑上面的代码来显示正确的代码吗?我当然容易受到sql注入的攻击。即使您没有插入任何内容。我建议阅读有关防止sql注入的内容。目前,我可以用一些基本的SQL下载您的整个数据库。SQL注入也可以用于登录目的。