Php SQL语法错误,请参阅服务器版本,以获取要在';附近使用的正确语法@hotmail.com,雇员)和"x27 ;;在1号线
我正在尝试使用php创建一个注册页面,当我在下面编写mysql语句时,它不会接受它,而是会抛出一个错误,这是我几个小时以来一直在试图解决的问题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
$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文档: