PDO 插入将文本区域上传到我的数据库

Posted

技术标签:

【中文标题】PDO 插入将文本区域上传到我的数据库【英文标题】:PDO Insert uploading a textarea into my DB 【发布时间】:2017-09-27 18:32:57 【问题描述】:

几个月来,我一直在尝试找出如何修复和创建我所设想的东西,我知道这些是可以实现的,而且可能并不难。

我正在尝试将我放置在我的页面上的文本区域上传到数据库中,人们可以在其中查看他们上传的信息。这是一个例子。

Person A 将文本复制/粘贴到文本区域中:http://example.com/textarea/ 他单击上传/提交按钮并获得如下链接:http://example.com/A93KJUQ21.txt 任何有权访问该链接的人都可以单击它,它将显示上传到该链接的内容。无论 A、B、C、D 等人上传什么,它都会生成一个新的、唯一的信息链接。示例如下:

http://example.com/A93KJUQ21.txt

http://example.com/JKO2QN498.txt

http://example.com/PMNR01NEQ.txt

等等..

这是我目前拥有的代码

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
if (isset($_POST['upload'])) 
$textarea = $_POST['paste-area'];

//Add validations

$odb = new PDO("mysql:dbname=dbname;host=localhost", "dbusername", 
"mypasswordgoeshere");

$query = $odb->prepare("INSERT INTO submission (`textarea`) VALUES 
(:textarea)"); //I'm just making up the structures

$query->bindParam(':textarea', $textarea, PDO::PARAM_STR);

$status = $query->execute(); //$status contains true or false

//Other codes...



?>

【问题讨论】:

你的问题是什么? 看看这个:link 您可以创建新文件并将 textarea 中的内容放入创建的文件中。您可以通过生成一些随机字符串来给您的文件一个唯一的名称。投票结束 【参考方案1】:

您的表格需要两列,随机字符串和textarea 内容。当用户提交表单时,您需要创建随机字符串并将其与文本区域一起插入到数据库中。

$string = uniqid();
$query = $db->prepare("INSERT INTO submission (id, textarea) VALUES (:string, :textarea)");
$query->bindParam(':string', $string);
$query->bindParam(':textarea', $textarea);
$query->execute();
echo "Link is <a href='http://example.com/lookup.php?id=$string'>href='http://example.com/lookup.php?id=$string</a>";

我已将链接指向 PHP 脚本。您无法使用.txt URL 从数据库中检索,它只是尝试下载常规文件。您需要指向一个 PHP 脚本,该脚本从 submission 表中获取文本区域。

如果您想让它看起来像一个.txt 文件,您可以在服务器上使用重写规则,将.txt URL 重写为等效的.php URL。

【讨论】:

我想要做的事情的示例站点是hastebin.com 我不想做所有保存的东西,但只想使用唯一链接显示信息。 他们可能正在使用重写规则。【参考方案2】:

为什么你认为你需要一个数据库呢?

<?php
if (!empty($_POST['text'])) 
    $filename = uniqid().".txt";
    file_put_contents($filename, $_POST['text']);
    die("http://".$_SERVER['HTTP_HOST']."/$filename");

?>
<form method=post>
<textarea name=text></textarea>
<input type=submit>
</form>

【讨论】:

该代码创建了一个扩展名为“.txt”的唯一文件名,但我仍然无法将 textareas 内容添加到数据库中。 难怪你花了几个月的时间来完成这个小任务,如果适用于所有人的代码不适合你:) 什么意思?我说代码有效,但它只是在点击提交按钮后给了我一个唯一的链接。当我点击它提供的链接时,它没有显示我在 textarea 中输入的内容。

以上是关于PDO 插入将文本区域上传到我的数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法将文本区域值传递给我的表单

将文本区域保存到本地服务器上的 HTML 文件

如何使用 PHP 将文本区域数据从 HTML 文档发送到 MySQL 数据库?

您如何一次将文本区域动态添加到页面?

在没有插入操作的情况下在 html 文本区域中输入引号和双引号在数据库中失败。可能吗?

将文本区域中的 <br /> 替换为行分隔符(Javascript)