“where子句”中的未知列“this”

yvt65v4c  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(614)

我已经尽力在以前的线程中找到问题的答案,但就是找不到我需要的,我的php文档中有一个函数,当用户名与sessionnaeme匹配时,它会用预定义的变量更新users表中的一列(follow(varchar)),但是,这个函数返回错误“unknown column'this'in'where clause'”这是tabel layout: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";
            }
}
?>
gjmwrych

gjmwrych1#

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

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

无论如何,您应该避免在sql中使用php变量。您发现了sql注入的风险区域。。您应该看看sql驱动程序管理器是如何准备语句和绑定参数的

u2nhd7ah

u2nhd7ah2#

下面是如何在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参数化查询的初学者指南。将此链接添加书签并经常引用。防止sql注入

相关问题