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

时间:2018-10-06 06:14:16

标签: php html mysql sql

我已经尽力在以前的线程中找到我的问题的答案,但是找不到我需要的东西,我的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";
            }
}
?>

2 个答案:

答案 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驱动程序管理器如何准备语句和绑定参数