亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

出現錯誤“'字段列表'中的未知列'文本'”

出現錯誤“'字段列表'中的未知列'文本'”

PHP
開滿天機 2021-11-26 16:31:46
我正在嘗試將文本插入到我的數據庫表中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    ");}我的代碼做什么:當一些文本被輸入到rqvcomtextarea 時,該文本被插入到表格的rqvcom列reqviews中。如果reqviews表中已存在rqvuserid用戶的行,則不能插入具有相同用戶 ID 的另一行。我的問題是我的代碼給了我提供的錯誤信息。編輯:表 reqviewsrqvid | rqvrqid | rqvuserid | rqvcom | rqvdate桌子 requestsrqid
查看完整描述

2 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

SELECT {$rqid}, {$sid}, {$rqvcom}, NOW()

這將選擇這些變量中的列名:


// let's say these are the values in your variables:

$rqid = "text";

$sid = "session123";

$rqvcom = "example";


// then this query:

SELECT {$rqid}, {$sid}, {$rqvcom}, NOW()


// is the same as:

SELECT text, session123, example, NOW()

這就是您收到該錯誤的原因。這極不可能是您想要的。我懷疑您真正想要的是選擇列rqid,sid并且rqvcom:


SELECT rqid, sid, rqvcom, NOW()

編輯:現在您已經添加了表結構,您似乎更有可能想要實際選擇字符串值,在這種情況下,您需要將變量用引號括起來,如@Giacomo M 建議:


SELECT '{$rqid}', '{$sid}', '{$rqvcom}', NOW()


// which will become:

SELECT 'text', 'session123', 'example', NOW()

那么您的數據庫將不會將字符串與列名混淆。


查看完整回答
反對 回復 2021-11-26
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

如果您嘗試將 的值$rqvcom插入數據庫,則需要將其放在引號中,因為它是一個字符串。否則,它被視為列名。


$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

");

但是,這會讓您容易受到 SQL 注入的影響,因此您應該使用準備好的語句。


$stmt = $conn->prepare("

    INSERT INTO reqviews (rqvrqid, rqvuserid, rqvcom, rqvdate)

        SELECT ?, ?, ?, NOW()

        FROM requests

        WHERE EXISTS (

            SELECT rqid

            FROM requests

            WHERE rqid = ?)

        AND NOT EXISTS (

            SELECT rqvid

            FROM reqviews

            WHERE rqvuserid = ?

            AND rqvrqid = ?)

        LIMIT 1

");

$stmt->bind_param("iisiii", $rqid, $sid, $rqvcom, $rqid, $sid, $rqid);

$stmt->execute();


查看完整回答
反對 回復 2021-11-26
  • 2 回答
  • 0 關注
  • 368 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號