Php SQL语法错误,请参阅服务器版本,以获取要在';附近使用的正确语法@hotmail.com,雇员)和"x27 ;;在1号线

Php SQL语法错误,请参阅服务器版本,以获取要在';附近使用的正确语法@hotmail.com,雇员)和"x27 ;;在1号线,php,mysqli,Php,Mysqli,我正在尝试使用php创建一个注册页面,当我在下面编写mysql语句时,它不会接受它,而是会抛出一个错误,这是我几个小时以来一直在试图解决的问题 $query = "INSERT INTO users(username, password,name,surname,email,role)VALUES($username, $password,$name,$lastname,$email,$role)"; $stmt = mysqli_prepare ($dbh, $query) or

我正在尝试使用php创建一个注册页面,当我在下面编写mysql语句时,它不会接受它,而是会抛出一个错误,这是我几个小时以来一直在试图解决的问题

   $query = "INSERT INTO users(username, password,name,surname,email,role)VALUES($username, $password,$name,$lastname,$email,$role)";
   $stmt = mysqli_prepare ($dbh, $query) or die(mysqli_error($dbh));
显示的错误是:

您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解第1行“@hotmail.com,Employee)”附近使用的正确语法


如果插入字符串,请确保使用正确的引号:

$query = "INSERT INTO users(username, password,name,surname,email,role)VALUES('$username', '$password','$name','$lastname','$email','$role')";

如果插入字符串,请确保使用正确的引号:

$query = "INSERT INTO users(username, password,name,surname,email,role)VALUES('$username', '$password','$name','$lastname','$email','$role')";

您开始使用准备好的语句,但随后又转身直接将变量插入到查询中—不要这样做,因为这直接违背了使用
prepare()
的目的。而是绑定变量

$query = "INSERT INTO users(username, password, name, surname, email, role) VALUES (?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($dbh, $query) or die(mysqli_error($dbh));
$stmt->bind_param('sssss', $username, $password, $name, $lastname, $email, $role);
$stmt->execute();
$stmt->close();
您最初的错误是由于查询中字符串周围缺少引号,但是当使用带占位符的准备语句时,您也不应该有引号

如果您在插入的变量上使用了
mysqli\u real\u escape\u string()
,现在应该删除它-因为这些变量现在已在查询中参数化

请参阅以下链接和文档


您开始使用预先准备好的语句,但随后又转身直接在查询中插入变量-不要这样做,因为这直接违背了使用
prepare()
的目的。而是绑定变量

$query = "INSERT INTO users(username, password, name, surname, email, role) VALUES (?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($dbh, $query) or die(mysqli_error($dbh));
$stmt->bind_param('sssss', $username, $password, $name, $lastname, $email, $role);
$stmt->execute();
$stmt->close();
您最初的错误是由于查询中字符串周围缺少引号,但是当使用带占位符的准备语句时,您也不应该有引号

如果您在插入的变量上使用了
mysqli\u real\u escape\u string()
,现在应该删除它-因为这些变量现在已在查询中参数化

请参阅以下链接和文档


出于安全原因,不应在查询中使用变量

相反,请使用以下命令:

$stmt = mysqli_prepare($link, "INSERT INTO users(username, password,name,surname,email,role)VALUES(?,?,?,?,?,?)");
mysqli_stmt_bind_param($stmt, 'ssssss', $password, $name, $surname, $email, $role);
mysqli_stmt_execute($stmt);
请看一下php文档:


出于安全原因,不应在查询中使用变量

相反,请使用以下命令:

$stmt = mysqli_prepare($link, "INSERT INTO users(username, password,name,surname,email,role)VALUES(?,?,?,?,?,?)");
mysqli_stmt_bind_param($stmt, 'ssssss', $password, $name, $surname, $email, $role);
mysqli_stmt_execute($stmt);
请看一下php文档: