我正在为我的大学项目创建一个简单的网上商店,它使用数据库中的两个表(用户和项目)。 我尝试在数据库中插入一些有关特定项目的信息。最后一列是已记录用户的ID。我查询从'users'表接收实际登录用户的id。 当我使用这个变量($ lastlogin)通过echo打印它显示一个正确的值。 不幸的是,当我尝试使用insert查询将id插入表'items'时,会出现0而不是正确的值(例如5)。 有谁知道如何解决我的问题?我将不胜感激。
$idlogin = "SELECT id FROM users WHERE login=:login";
$query = $db->prepare($idlogin);
$query->bindParam(":login", $_SESSION['login']);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
$lastlogin = $row["id"];
$sql = "INSERT INTO `items` VALUES (NULL, :name, :description, :cust_id)";
$params = [ ":name" => trim($_POST["name"]),
":description" => trim($_POST["description"]),
":cust_id" => '$lastlogin'];
$query = $db->prepare($sql);
$query->execute($params);
答案 0 :(得分:2)
您不必将$lastlogin
放在params中的引号之间。如果这样做,mysql会将其视为值为"$lastlogin"
的字符串。 Mysql将无法将其解析为整数,而是添加值0
。
$params = [
":name" => trim($_POST["name"]),
":description" => trim($_POST["description"]),
":cust_id" => $lastlogin
];
答案 1 :(得分:0)
好的,谢谢所有试图帮助我的人
我在this thread的Michael Berkowski回复中找到了线索 $ lastlogin只是第一次初始化,所以我将它放入$ _SESSION ['lastlogin']并在sql查询中调用它。
$idlogin = "SELECT id FROM users WHERE login=:login";
$query = $db->prepare($idlogin);
$query->bindParam(":login", $_SESSION['login']);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
$lastlogin = (int)$row["id"];
$_SESSION['lastlogin'] = $lastlogin;
$sql = "INSERT INTO items VALUES (NULL, :name, :description, :cust_id)";
$params = [
":name" => trim($_POST["name"]),
":description" => trim($_POST["description"]),
":cust_id" => $_SESSION['lastlogin']
];
$query = $db->prepare($sql);
$query->execute($params);
现在一切都很好。再次感谢您的时间。