我的代码存在问题。代码的目的只是一个明确的登录系统,您可以登录并创建用户。我的问题是创建用户。当我填写字段时,它会说错误消息错误添加用户,因为用户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);
}
}
}
答案 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之后的部分。现在看到差异?希望这会有所帮助。