尝试阅读表时出现问题 - MySQL

时间:2016-02-08 13:34:57

标签: php mysql

我相信这是一个非常基本的问题,但我开始使用PHP进行编码,所以我真的无法独自完成:

我试图解决一个奇怪的问题已经有2天了。我正在使用XAMPP作为我的数据库及其表,目的是创建一个登录和注册系统。

这是我的用户表:

CREATE TABLE `playware`.`users` (
`user_id` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 25 ) NOT NULL ,
`surname` VARCHAR( 25 ) NOT NULL ,
`email` VARCHAR( 35 ) NOT NULL ,
`telephone` VARCHAR( 9 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
UNIQUE (`email`)
) ENGINE = MYISAM ;

寄存器.php文件正在工作(它正确地将用户添加到表中)但是当我尝试登录时我就是不能。

所以我在login.php文件上做了这个,只是为了测试它是否得到了行:

<?php
include_once 'connect.php';
session_start();
if(isset($_SESSION['user'])!="")
{
    header("Location: index_home.php");
}
$email = $_POST["email"];
$upass = $_POST["password"];
$sql="SELECT email FROM users";
$res=$conn->query($sql);
if($res->num_rows>0)
{
    while($row=$res->fetch_assoc());
    {
        if($row["email"]==$email)
        {
            echo"Writting email: ".$row["email"]." - done writting.";
        }
    }
}
?>

我一直尝试在白色屏幕上执行此结果,仅此时它应该显示用户电子邮件。有人知道如何解决这个问题吗?

================================的更新 ======= =========================== 错误是:

while($row=$res->fetch_assoc());
{
    //Stuff here ...
}

它不能采取“;”因为它取消了输出。所以修复是:

while($row=$res->fetch_assoc())
(...)

正如我所料,这是一个基本错误......感谢那些支持我的人。

1 个答案:

答案 0 :(得分:1)

您在此处有错误:

if(isset($_SESSION['user'])!="")

您无法以这种方式检查变量是否设置且不等于空白。相反,你应该这样做:

if(isset($_SESSION['user']) && $_SESSION['user']!="")

这里有另一个错误,它会阻止脚本输出任何内容:

while($row=$res->fetch_assoc());
---------remove the -----------^

由于这是有效的语法,您可能在错误报告中看不到任何内容。

你真的应该使用PHP的built-in functions来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用password_hash() compatibility pack

另外,请务必使用prepared和/或PDOMySQLi语句,并考虑使用PDO it's really pretty easy