Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我在这个代码中没有得到任何结果?_Php_Mysql_Select - Fatal编程技术网

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

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如果

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如果要选择特定列,可以使用所需列重新放置*。 例如:

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注入也可以用于登录目的。