Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php登录系统插入故障_Php_Mysql_Login - Fatal编程技术网

Php登录系统插入故障

Php登录系统插入故障,php,mysql,login,Php,Mysql,Login,我的代码有问题。代码的目的只是一个清晰的登录系统,您可以在其中登录并创建用户。我的问题是创建一个用户。当我填写字段时,它会显示错误消息error adding user,因为用户ID为零。我问我的老师,他说我的insert语句有问题,但我一辈子也弄不明白。有人能给我指出正确的方向吗?非常感谢。(表名称为安全性) PHP $insert\u sql=“插入安全设置”; $insert_sql.=“用户名=”$username.“”; $insert_sql.=”,first_name=”“$fir

我的代码有问题。代码的目的只是一个清晰的登录系统,您可以在其中登录并创建用户。我的问题是创建一个用户。当我填写字段时,它会显示错误消息error adding user,因为用户ID为零。我问我的老师,他说我的insert语句有问题,但我一辈子也弄不明白。有人能给我指出正确的方向吗?非常感谢。(表名称为安全性)

PHP

$insert\u sql=“插入安全设置”;
$insert_sql.=“用户名=”$username.“”;
$insert_sql.=”,first_name=”“$first_name.”;
$insert_sql.=”,last_name='“$last_name.”;
$insert_sql.=”,email=“$email.”;
$insert_sql.=”,密码=”$salted_密码。"'";
$result=$dbh->query($insert\u sql);
$user\u id=$dbh->insert\u id;
如果($user\u id>0){
会话_start();
$\u会话['user\u id']=$user\u id;
echo“创建登录并用户登录”;
回声“”;
}否则{
$msg='添加用户时出错';
新登录名($dbh,$msg);
}
}
}

您的insert语句错误地采用了update语句的形式

$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 . "')";
数据库中的用户名列、数据库中的名字列、数据库中的姓氏列和数据库中的电子邮件列需要替换为数据库中的列名

您的用户id返回为0,因为记录没有实际插入,而不是因为您试图将id设置为0。

,正确的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列之后的部分。现在看到区别了吗?希望这有帮助。

说。即使是这样也不安全!永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。您的错误消息是什么?@JayBlanchard我正在更改密码这只是功能的一部分,应该会给我带来麻烦。更改密码?
INSERT INTO security SET ...