我正在尝试将变量插入我的数据库,其中用户数据来自 $_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/