Php登录系统插入麻烦

时间:2017-04-17 20:52:23

标签: php mysql login

我的代码存在问题。代码的目的只是一个明确的登录系统,您可以登录并创建用户。我的问题是创建用户。当我填写字段时,它会说错误消息错误添加用户,因为用户ID为零。我问我的老师,他说我的插入陈述有问题,但我不能为我的生活搞清楚。有人能指出我正确的方向吗?谢谢! (表名称称为安全性)

PHP

$insert_sql ="INSERT INTO security SET ";
    $insert_sql .= " username = '".$username ."'";
    $insert_sql .= ", first_name = '".$first_name."'";
    $insert_sql .= ", last_name = '".$last_name."'";
    $insert_sql .= ", email = '".$email."'";
    $insert_sql .= ", password = '". $salted_password . "'";

    $result = $dbh->query($insert_sql);


    $user_id = $dbh->insert_id;

    if ($user_id > 0){

        session_start();
        $_SESSION['user_id'] =$user_id;



        echo "Login Created and user logged in<p>";
        echo "<a href=main.php>Click here to continue</a><p>";


    } else {
        $msg = 'Error adding user';
        NEW_LOGIN($dbh,$msg);
    }
}
}

2 个答案:

答案 0 :(得分:0)

您的插入语句错误地采用更新语句的形式。

$insert_sql ="INSERT INTO security SET ";
$insert_sql .= " username = '".$username ."'";
$insert_sql .= ", first_name = '".$first_name."'";
$insert_sql .= ", last_name = '".$last_name."'";
$insert_sql .= ", email = '".$email."'";
$insert_sql .= ", password = '". $salted_password . "'";

实际应该是

$insert_sql ="INSERT INTO security (username_column_in_db, first_name_column_in_db,last_name_column_in_db,email_column_in_db)
values ('".$username ."','".$first_name."','".$last_name."','".$email."','". $salted_password . "')";

username_column_in_db,first_name_column_in_db,last_name_column_in_db和email_column_in_db 需要替换为数据库中的列名。

您的用户ID返回0,因为实际上未插入记录,不是因为您尝试将ID设为0。

答案 1 :(得分:0)

According to the MySQL Docs,正确的INSERT语句如下所示:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

你拥有的是:

INSERT INTO security SET ...

具体看一下在第一个语句中定义列a,b和c之后的部分。现在看到差异?希望这会有所帮助。