繁体   English   中英

为什么将数据插入SQL Server时我的php产生错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM