gpt4 book ai didi

php - 防止注入(inject) : Using prepared statements and parameters in a function - syntax error

转载 作者:行者123 更新时间:2023-11-29 02:22:02 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com