簡體   English   中英

將一行數據從一個數據表導出到另一個

[英]Exporting a Line of Data From One Data Table to Another

下面的代碼適用於我正在處理的項目。 我的 PHP 代碼有一些問題,需要幫助。

我的數據表上有一個名為“導出”的按鈕。 單擊該按鈕后,我希望復制該行上的數據並將其移動到存檔中。

<?php

    function val($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
    
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "databasename";
    
    $ticket_id = $_GET["ticket_id"];
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    
    $sql = "SELECT * FROM activeticket WHERE ticket_id='$ticket_id' INSERT INTO `ticketarchive`(`name`, `account_num`, `department`, `ticket_desc`, `email`, `assigned`, `status`, `fibre_site`) VALUES ([name],[account_num],[department],[ticket_desc],[email],[assigned],[status],[fibre_site])";
    
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully. Record ID is: ";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    
    $conn->close();
?>

以下是由此產生的錯誤:

錯誤:SELECT * FROM activeticket WHERE ticket_id='1' INSERT INTO archiveticket ( name , account_num , department , ticket_desc , email , assigned , status , fibre_site ) VALUES ([name],[account_num],[department],[ticket_desc], [email],[assigned],[status],[fiber_site]) 你的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,以了解在“INSERT INTO archiveticketnameaccount_numdepartmentticket_desc 、第 1 行的‘’)附近使用的正確語法

首先執行選擇查詢,然后執行插入查詢。 現在您正試圖同時運行它們,這就是問題所在。

這實際上並不是您遇到的 PHP 問題,只是您似乎不熟悉 SQL。 您要做的是將 SELECT 查詢的結果插入到表中。 這根本不是這樣做的方法。 你要找的是:

$sql = "INSERT INTO `ticketarchive`(
    `name`,
    `account_num`,
    `department`,
    `ticket_desc`,
    `email`,
    `assigned`,
    `status`,
    `fibre_site`
)
SELECT
    `name`,
    `account_num`,
    `department`,
    `ticket_desc`,
    `email`,
    `assigned`,
    `status`,
    `fibre_site`
FROM
    `activeticket`
WHERE
    `ticket_id` = $ticket_id"

有關更多信息,請閱讀此處

我還建議您研究參數化查詢以避免 SQL 注入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM