作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 PHP 的新手,我正在尝试了解安全措施,例如防止注入(inject)。下面是我的代码。基本上,我收到错误 “您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的‘1’附近使用的正确语法”。数据仍在被发送到数据库中,但这个错误让我觉得注入(inject)预防不起作用。我没有遗漏任何 {
,因为我使用的是 Dreamweaver,它至少会告诉我。
另外,需要注意的是,数据库连接线和函数位于一个单独的 php 文件中,而不是 $_POST 代码中的内容。
$conn = mysqli_connect($host, $user, $password, $databaseName);
if ($_POST) {
if(isset($_POST['register'])){
registerUser( //I'm calling the function here
$_POST['username'],
$_POST['user_password'],
$_POST['user_fname'],
$_POST['user_lname'],
$_POST['email'],
$_POST['phone'],
$_POST['user_birthdate'],
$_POST['user_address1'],
$_POST['user_address2'],
$_POST['user_city'],
$_POST['user_postcode'],
$conn);
}
}
function registerUser(
$username,
$user_password,
$user_fname,
$user_lname,
$email,
$phone,
$user_birthdate,
$user_address1,
$user_address2,
$user_city,
$user_postcode,
$conn){
if($stmt = $conn->prepare("INSERT INTO fcusers (
username,
user_password,
user_fname,
user_lname,
email,
phone,
user_birthdate,
user_address1,
user_address2,
user_city,
user_postcode)
VALUES (?,?,?,?,?,?,?,?,?,?,?)")){
$stmt->bind_param("sssssssssss",
$username,
$user_password,
$user_fname,
$user_lname,
$email,
$phone,
$user_birthdate,
$user_address1,
$user_address2,
$user_city,
$user_postcode);
$sql = $stmt->execute();
$stmt->close();
}
$result = mysqli_query($conn,$sql) or die(mysqli_error($conn));
if($result){
echo "CONGRATS";
}
}
最佳答案
生成的错误来自您的 mysqli_query(),而不是准备好的语句。准备好的语句使用 $sql = $stmt->execute()
执行。
使用 mysqli_query($conn,$sql)
,您正在运行一个返回值为 $stmt->execute()
的查询,在本例中它被评估为 1( bool 值 true)因此出现错误:syntax to use near '1'
您可以在 $stmt->execute()
上运行您的条件:
$result = $stmt->execute() or die(mysqli_error($conn));
关于php - 防止注入(inject) : Using prepared statements and parameters in a function - syntax error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152744/
我是一名优秀的程序员,十分优秀!