我尝试执行以下查询来更新表中的记录。
require "conn.php";
$user_name = $_POST["username"];
$code = $_POST["code"];
$name = $_POST["groupname"];
echo "$user_name, $code, $name";
$sql_update = "UPDATE users SET group = '$name' WHERE username = '$user_name'";
if ($conn->query($sql_update) === TRUE) {
echo "success";
}
else {
echo "fail";
}
查询失败,我不确定原因。建立连接,我能够回显用户名代码和名称。它有什么原因导致它不能正常工作吗?
答案 0 :(得分:0)
您的代码不安全
使用预准备语句查看此代码
require_once("conn.php");
$user_name = $conn->real_escape_string($_POST["username"]);
$code = $conn->real_escape_string($_POST["code"]);
$name = $conn->real_escape_string($_POST["groupname"]);
$sql_update = $conn->prepare("update `users` set `group` = ? where `username` = ?");
$sql_update->bind_param("ss",$name,$user_name);
$sql_update->execute();
$sql_update->close();
$conn->close();
conn.php文件应该是这样的
$config = parse_ini_file('config.ini'); // Connection infos.
$conn = mysqli_connect('localhost',$config['username'],$config['password'],$config['db_name']);
if($conn === false) {
die("Something was wrong ! Please try again later."); // Error if connection not ok.
}
$conn->set_charset("utf8");
在名为config.ini的public_html文件夹外创建文件以写入连接数据
[db_connection]
username = username
password = password
db_name = dbname
此函数将参数绑定到SQL查询,并告诉数据库参数是什么。 " sss"参数列出参数所包含的数据类型。 s字符告诉mysql该参数是一个字符串。
论证可能是以下四种类型之一:
i - integer
d - double
s - string
b - BLOB
了解详情here