我已经尽力在以前的线程中找到我的问题的答案,但是找不到我需要的东西,我在我的php文档中有一个函数,用于在users表中更新一个列(follow(varchar)) -aname变量,当a_username与sessionnaeme匹配时,但是这个函数在'where子句'中返回错误“未知列'this'”这是tabel布局:Table structure我是php的新手,所以任何帮助都会非常感激! (对不起,如果问题不清楚,请提出任何问题)php功能如下。非常感谢提前!!
<?php
if(isset($_POST['submit'])) {
$sessionname = $_SESSION['user'];
$follow = mysqli_real_escape_string($conn, $_POST['addedname']);
$sql = "UPDATE users SET follow =" .$follow. " WHERE a_username =".$sessionname."";
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
if($result !== false) {
header("Location: ./Profile.php?Follow=success");
exit;
} else {
echo "Fail";
}
}
?>
对于字符串值,您应该使用值周围的引号
$sql = "UPDATE users SET follow ='" .$follow. "' WHERE a_username ='".$sessionname."';";
无论如何你应该避免SQL中的PHP变种。您面临sql注入风险的区域..您应该看看SQL驱动程序管理器如何准备语句和绑定参数
以下是使用MySqli中绑定参数的方法。
$query = "UPDATE users SET follow = ? WHERE a_username = ?";
$stmt = $conn->prepare($query);
$stmt->bind_param("ss", $_POST['addedname'], $_SESSION['user']);
$stmt->execute();
$result = $stmt->get_result();
if(!$result->num_rows === 0){
header("Location: ./Profile.php?Follow=success");
exit;
} else {
echo 'Fail';
}
$stmt->close();
以下是使用MySqli进行参数化查询的优秀初学者指南。为此链接添加书签并经常参考。 Prevent SQl Injection