MySQL/PHP:无法从数据库中选择,但元素存在

Posted

技术标签:

【中文标题】MySQL/PHP:无法从数据库中选择,但元素存在【英文标题】:MySQL/PHP: Cannot select from database but the element exists 【发布时间】:2013-07-19 23:05:03 【问题描述】:

我知道这个问题被问了很多,但我似乎找不到适合我的正确答案。在 phpMyAdmin 中,用户名“user”和密码“test”存在——但由于某种原因,它一直说它不存在。代码的输出是:

成功连接到数据库邮箱:*用户*密码:*test*用户名和密码不匹配

代码如下:

$con = new mysqli('somewhere.com','admin','*****','nameofdb');
    if($con->connect_errno > 0)
        die('Unable to connect to database [' . $con->connect_error . ']');
    
    else
        echo "Successfully connected to DB ";
    
$email = mysqli_real_escape_string($con, $_POST['eml']);
       $password = mysqli_real_escape_string($con, $_POST['pwd']);
       //$encrPassword = md5($password);


       $login = $con->query("SELECT * 
                            FROM logininfo 
                            WHERE email = $email
                            AND password = $password");
       if($login == FALSE)
            echo " email:*$email* ";
            echo " password:*$password* ";
            //echo " password:*$encrPassword* ";

            echo "Username and Password does not Match";
       
       else 
            echo "Hey this works";
       //Check if user is logged in, if not then redirect.     
            /*session_start();
            if($_SESSION['loggedin'] == FALSE)
                $_SESSION['loggedin'] = TRUE;
                $_SESSION['username'] = $username;
            */
            header("Location: ../browse/index.php");
       
        mysqli_close($con);

【问题讨论】:

【参考方案1】:

查询变量必须用引号括起来吗?

SELECT * FROM sometable WHERE somecol='$someVar' AND someothercol='$someothervar';

【讨论】:

【参考方案2】:

查询有错误,如果你回显查询并在mysql上测试它可能更容易调试,你可以这样做:

$query = "SELECT * 
          FROM logininfo 
          WHERE email = $email
          AND password = $password";
echo $query;

祝你好运!

【讨论】:

【参考方案3】:

两个简单的步骤 1..在 phpmyadmin 中检查您的数据库,这些用户名和密码与您输入的用户名或密码匹配。如果是回显查询以了解内部查询的内容。 2..如果是,请确保您是否在注册时使用 md5 加密,如果您正在使用,则在登录时解密,如

$password=md5($password);

【讨论】:

我用的是md5加密,后来拿出来帮助调试过程。每当我回显我得到的查询时:DB SELECT * FROM users WHERE email = test AND password = test 在db中使用md5密码长度不应该太短,在注册和登录中删除加密然后尝试。 我删除了所有加密。没有运气。 :| $email = mysqli_real_escape_string($con, $_POST['eml']); $password = mysqli_real_escape_string($con, $_POST['pwd']); $query = "SELECT (email, password) FROM users WHERE email = $email AND password = $password"; if($result = mysqli_query($con, $query)) echo "嘿,这行得通"; 你的查询是错误的,删除选择子句后的括号写喜欢并在电子邮件和密码周围使用单引号写这个“SELECT * FROM users WHERE email='$email' AND password='$password' ".use mysql_query() 而不是 mysqli_query()

以上是关于MySQL/PHP:无法从数据库中选择,但元素存在的主要内容,如果未能解决你的问题,请参考以下文章

MySQL,PHP,登录信息正确但“无法连接到数据库”错误

从多个表中检索多个列不存在或匹配行集(mysql php)

无法选择最后插入的 id 为 [Mysql, php pdo oop] [重复] 的行

XCode 7 beta 6 UI 测试 - 无法选择列表中的元素

无法使用 div 中存在的 jquery 找到选择元素?

从日期选择器到 mysql/php 的奇怪日期格式