'where子句'中的未知列'this'

问题描述 投票:1回答:2

我已经尽力在以前的线程中找到我的问题的答案,但是找不到我需要的东西,我在我的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";
            }
}
?>
php html mysql sql
2个回答
0
投票

对于字符串值,您应该使用值周围的引号

 $sql = "UPDATE users SET follow ='" .$follow. "' WHERE a_username ='".$sessionname."';";

无论如何你应该避免SQL中的PHP变种。您面临sql注入风险的区域..您应该看看SQL驱动程序管理器如何准备语句和绑定参数


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

© www.soinside.com 2019 - 2024. All rights reserved.