我的代码有问题。该代码的目的只是一个明确的登录系统,您可以在其中登录并创建用户。我的问题是创建用户。当我填写字段时,它会显示错误消息,因为用户 ID 为零,所以添加用户时出错。我问我的老师,他说我的插入语句有问题,但我一生都无法弄清楚。有人能指出我正确的方向吗?谢谢你! (表名叫security)
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);
}
}
}
最佳答案
您的插入语句错误地采用了更新语句的形式。
$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。
关于php登录系统插入麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43459387/