PHP 在 WHERE 子句中使用 $_SESSION ['user' ] 插入 MySQL 数据库

标签 php mysql session

我正在尝试将变量插入我的数据库,其中用户数据来自 $_SESSION['user']。

<?php

require("common.php");

if(empty($_SESSION['user']))
{
    header("Location: login.php");

    die("Redirecting to Login");
}

$user = $_SESSION['user'];

~calculations done~

$query = "INSERT INTO db (role,rolesub) VALUES ('$varRole','$varRoleSub') WHERE user = $user";

    $query_params = array(
        ':role' => $varRole,
        ':roleSub' => $varRoleSub
    );
    try
    {
        $stmt = $db->prepare($query);
        $result = $stmt->execute($query_params);

    }
    catch(PDOException $ex)
    {
        die("Failed to run query 3: " . $ex->getMessage());
    }

我不断收到此错误:

无法运行查询 3:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“WHERE user = Array”附近使用的正确语法

我看不出我的 WHERE 子句在哪里失败了。

任何帮助将不胜感激!!!

最佳答案

INSERT 语句中不能有 WHERE 子句。

您正在寻找:

UDPATE db SET role = '$varRole', rolesub = '$varRoleSub' WHERE user = $user

或者:

INSERT INTO db (role,rolesub,user) VALUES ('$varRole','$varRoleSub',$user)

或者,如果您感觉特别俏皮,并且 user 就是您的 PK:

INSERT INTO db (role,rolesub,user) VALUES ('$varRole','$varRoleSub',$user)
  ON DUPLICATE KEY UPDATE role = '$varRole', rolesub = '$varRoleSub'

关于PHP 在 WHERE 子句中使用 $_SESSION ['user' ] 插入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23434371/

相关文章:

php - 多次选择相同的值

php - 重定向后重定向

java - GWT - 在 RPC 服务调用期间获取 session

MySQL if/else 表

php - 在 jQuery 中检索 JSON 响应

mysql - 由于自动增量,无法让调用 addusers 过程用于测试

javascript - 默认情况下,Node.js session 是如何处理的?

php - 如何同时将一张表中的id插入到另一张表中?

php - 在PHP中使用外来字符的SEO友好URL

PHP 从 mysql* 迁移到 mysqli