将一行数据从一个数据表导出到另一个数据表

时间:2020-08-27 12:16:48

标签: php mysql select sql-insert

下面的代码适用于我正在从事的项目。我的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'插入 archiveticketnameaccount_numdepartmentticket_descemailassignedstatusfibre_site)值 ([名称],[帐户编号],[部门],[机票说明],[电子邮件],[已分配],[状态],[光纤站点]) 您的SQL语法有误。检查手册 对应于您的MariaDB服务器版本,以使用正确的语法 在'INSERT INTO archiveticketnameaccount_numdepartment附近, ticket_desc,第1行的''

2 个答案:

答案 0 :(得分:0)

首先执行选择查询,然后执行插入查询。现在,您正在尝试同时运行它们,这就是问题所在。

答案 1 :(得分:0)

这并不是您真正遇到的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"

有关更多信息,请read here

我还建议您研究参数化查询以避免SQL注入。

相关问题