gpt4 book ai didi

php - 插入 stmt 绑定(bind)参数问题

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

我的 SQL 有另一个问题。您可以在下面看到我正在使用的代码:

<?php
$con=mysqli_connect("localhost","user","pass","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$name = mysqli_real_escape_string($con, $_POST['name']);
$contactpersonname = mysqli_real_escape_string($con, $_POST['contactpersonname']);
$departmentname = mysqli_real_escape_string($con, $_POST['departmentname']);
$title = mysqli_real_escape_string($con, $_POST['title']);
$email= mysqli_real_escape_string($con, $_POST['email']);

$stmt = $con -> prepare("INSERT INTO Contacts (Name, ContactPerson, Department, Title, EmailAddress) VALUES ('?', '?', '?', '?', '?')");
$stmt -> bind_param("sssss", $name, $contactpersonname, $departmentname, $title, $email);
$stmt -> execute();


echo "1 record added";

mysqli_close($con);
?>

由于某种原因,参数没有正确绑定(bind),数据库只有'?' (问号)已插入。我让数据库正确插入数据,但没有绑定(bind)参数。一个人告诉我,它让我容易受到 SQLi 的攻击,因此我试图过渡到 stmt。我真的不知道为什么会这样。如果可能的话,请帮帮我。附言。我通读了 stmt 绑定(bind)的 php 手册,但我不确定我是否做对了。

最佳答案

单引号 (') 表示 SQL 中的 varchar 文字。通过用引号将您的 ? 括起来,您可以防止它们被绑定(bind)。只需删除引号,您就可以开始了:

$stmt = $con -> prepare("INSERT INTO Contacts (Name, ContactPerson, Department, Title, EmailAddress) VALUES (?, ?, ?, ?, ?)");

关于php - 插入 stmt 绑定(bind)参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24749493/

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