[英]Why is my php producing error when inserting data into SQL server?
我正在尝试让PHP将html表单中的POST数据插入本地计算机上的SQL Server 2018中。 我看了php文档并按照它进行操作,但是我仍然不明白为什么代码会产生错误。 我要向其中插入数据的表名称为“ USER”。 谁能看看我的代码并告诉我怎么了?
我已经找到了包括PHP.net和堆栈溢出在内的各种资源来寻求解决方案,但并不能帮助我解决问题。
PHP脚本:
if(isset($_POST['create_acc'])) {
$username = strip_tags(trim($_POST["username"]));
$password = strip_tags(trim($_POST["password"]));
$role = strip_tags(trim($_POST["role"]));
$pwdhash = password_hash($password, PASSWORD_ARGON2I);
$sql = "INSERT INTO USER (user_id, password, role) VALUES (?, ?, ?)";
$params = array($username, $pwdhash, $role);
$stmt = sqlsrv_query( $conn, $sql, $params);
if ($stmt){
$msg = "Account created successfully!";
}else{
die(print_r(sqlsrv_errors(), true));
}
}
结果:
Array (
[0] => Array (
[0] => 42000
[SQLSTATE] => 42000
[1] => 156
[code] => 156
[2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near the keyword 'USER'.
[message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near the keyword 'USER'.
)
)
发布问题后1分钟后我才发现问题。 “用户”是SQL Server中的保留关键字。 一旦我将表名更改为USERNAME,它就可以工作了!!
如果您在SQL Server中使用保留关键字(可以在此处检查)。 您必须使用定界标识符。
这应该工作:
$sql = "INSERT INTO [USER] (user_id, password, role) VALUES (?, ?, ?)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.