php - PHP - 是否可以将会话名称插入数据库?
问题描述
所以我正在用 PHP 制作一个发布系统。当用户要创建帖子时,所有字段都需要完整,而我要做的是向数据库中插入会话名称,例如插入数据库'Edward',因为那将是会议的名称。这是我正在尝试做的事情:
<?php
session_set_cookie_params(86400*30, "/");
session_start();
require 'admin/config.php';
require 'functions.php';
if (isset($_SESSION['user'])) {
require 'view/new.view.php';
} else {
header('Location: index.php');
}
$connection = connect($bd_config);
if (!$connection) {
header('Location: error.php');
}
$errors = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$title = cleanData($_POST['title']);
$demo = cleanData($_POST['demo']);
@$project_type = $_POST['project_type'];
$content = $_POST['content'];
$post_by = $_SESSION['user'];
$errors = '';
if (empty($title) or empty($demo) or empty($project_type) or empty($content)) {
$errors .= '<p>Complete all the fields!</p>';
} else {
$statement = $connection->prepare("
INSERT INTO posts (ID, title, demo, content, post_type)
VALUES (null, :title, :demo, :content, :project_type)
");
$statement->execute(array(
':title' => $title,
':demo' => $demo,
':project_type' => $project_type,
':content' => $content,
));
$statement2 = $connection->prepare("
INSERT INTO posts (post_by)
VALUES ($post_by)
");
$statement2->execute(array(
$post_by
));
header('Location: main.php');
}
}
?>
如您所见,我正在statement
为 2 个 SQL 咨询做 2 个变量,但是当我这样做时,它会引发此错误:
<b>Fatal error</b>: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'cesar' in 'field list' in C:\xampp\htdocs\bider\test2\new.php:52
Stack trace:
#0 C:\xampp\htdocs\bider\test2\new.php(52): PDOStatement->execute(Array)
#1 {main}
thrown in <b>C:\xampp\htdocs\bider\test2\new.php</b> on line <b>52</b><br />
我猜它标记了“cesar”,因为那是会话名称。有人可以帮忙吗?
解决方案
您的第二个查询是问题所在 - 您没有正确使用参数。将其与您的第一个进行比较,并发现结构上的差异。您需要:post_by
在 INSERT 语句中指定一个占位符,以便 PDO 知道在哪里绑定变量,并且您需要为$post_by
参数数组中的条目提供与索引相同的名称,以便它们匹配。
这是一个可以工作的版本:
$statement2 = $connection->prepare(
"INSERT INTO posts (post_by)
VALUES (:post_by)"
);
$statement2->execute(array(
":post_by" => $post_by)
);
推荐阅读
- c# - 处理游戏中的人口(统一)
- java - 如何在没有 org.jdesktop.beansbinding 的 Apache Netbeans 中实现绑定
- bash - bash:下面的序列试图做什么?
- angular - 如何使用 Greasemonkey 用我自己的 Angular 单页应用程序替换 web?
- html - 如何用破折号替换有序列表中的句点并仍然保持适当的缩进?
- ssl-certificate - javax.net.ssl.SSLHandshakeException:收到致命警报:google-client-api 的handshake_failure
- python - Python exec(script, globals()) 不显示 GUI (iPyWidgets)
- java - Jcov 代码覆盖实用程序导致错误 com.sun.javatest is missing
- reactjs - 从异步回调函数调用 React setState() 函数
- gitlab - 设置 gitlab-runner 在 git push 后自动运行?