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