我已经尽力在以前的线程中找到我的问题的答案,但是找不到我需要的东西,我的php文档中有一个函数可以更新users表中的列(跟随(varchar))带有预定义变量的变量,当a_username与sessionnaeme匹配时,此函数返回错误“在'where子句'中的'未知列'this'””,这是表格布局: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";
}
}
?>
答案 0 :(得分:1)
这是在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
答案 1 :(得分:0)
对于字符串值,应在值周围使用引号
$sql = "UPDATE users SET follow ='" .$follow. "' WHERE a_username ='".$sessionname."';";
无论如何,您都应该避免在SQL中使用PHP变量。您需要进行sql注入的风险..您应该查看一下SQL驱动程序管理器如何准备语句和绑定参数