我的代码有问题。代码的目的只是一个清晰的登录系统,您可以在其中登录并创建用户。我的问题是创建用户。当我填写字段时,会说错误消息错误添加用户,因为用户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);
}
}
}
您的插入语句错误地采用了更新语句的形式。
$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_in_db,last_name_column_in_in_db和email_column_in_in_db 需要用数据库中的列名替换,
您的用户ID返回为0,因为实际上没有插入记录,不是因为您尝试将ID作为0。
根据MySQL文档,正确的插入语句如下:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
您拥有的是:
INSERT INTO security SET ...
在第一个语句中定义了列A,B和C列后的零件。现在看到区别了吗?希望这会有所帮助。