【发布时间】:2019-08-16 22:34:54
【问题描述】:
我正在尝试将文本插入我的数据库表 reqviews。但我收到错误消息:
Unknown column 'text' in 'field list'。我不确定我的代码有什么问题。请帮忙
if (isset($_POST['combut'])) {
$rqvcom = $_POST['rqvcom'];
$rqid = (int)$_GET['rqid'];
$conn->query("
INSERT INTO reqviews (rqvrqid, rqvuserid, rqvcom, rqvdate)
SELECT {$rqid}, {$sid}, {$rqvcom}, NOW()
FROM requests
WHERE EXISTS (
SELECT rqid
FROM requests
WHERE rqid = {$rqid})
AND NOT EXISTS (
SELECT rqvid
FROM reqviews
WHERE rqvuserid = {$sid}
AND rqvrqid = {$rqid})
LIMIT 1
");
}
我的代码的作用:当在rqvcom textarea 中输入一些文本时,该文本会被插入到reqviews 表的rqvcom 列中。如果reqviews 表上已存在具有rqvuserid 用户的行,则无法插入具有相同用户ID 的另一行。我的问题是我的代码给了我我提供的错误信息。
编辑:表reqviews
rqvid | rqvrqid | rqvuserid | rqvcom | rqvdate
表requests
rqid
【问题讨论】:
-
如果“text”是
$rqvcom的值,这行SELECT {$rqid}, {$sid}, {$rqvcom}, NOW()会尝试选择列text -
由于您要插入字符串,因此您必须在
SELECT语句中对它们进行转义。小心 Sql 注入 -
这就是您收到错误的原因。您想使用
$rqvcom选择什么? -
你确定没有事吗? :D 你正在插入字符串,所以你必须使用这样的东西: ...
SELECT 'text', 'your value',ecc ...如果你不使用'字符mysql认为text是列的名称。这就是您收到该错误的原因 -
@misner3456 是的。但是如果你在没有任何其他更新的情况下这样做,你很容易受到 Sql 注入