我制作了一个脚本,从一个表中插入另一个表中的一行,但是它必须从一个表中删除该记录。由于某些原因,这是行不通的。有人可以帮我解决这个问题吗?
我的代码:
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/layout.css"/>
<?php session_start();
if(!isset($_SESSION['login_id'])){
$url = 'helpdesklogin.php';
header("Location: $url");
}
?>
</head>
<body>
<?php
$server="localhost";
$username="root";
$password="";
$connect_mysql=mysql_connect($server,$username,$password) or die ("Connection Failed!");
$mysql_db=mysql_select_db("helpdesk_middenpolder",$connect_mysql) or die ("Could not Connect to Database");
$id=$_GET['id'];
$query=mysql_query("INSERT INTO afgehandelden_incidenten SELECT * FROM incidenten WHERE incidentID='$id'");
$result=mysql_query($query);
if($result=mysql_query($query)){
$query2=mysql_query("DELETE FROM incidenten WHERE incidentID=$id");
}
else {
echo mysql_error();
}
?>
</body>
</html>
答案 0 :(得分:2)
错误的方式:
$query=mysql_query("INSERT INTO afgehandelden_incidenten SELECT * FROM incidenten WHERE incidentID='$id'");
$result=mysql_query($query);
使用“mysql_query()”两次
执行插入查询两次你可以这样做:
$query="INSERT INTO afgehandelden_incidenten SELECT * FROM incidenten WHERE incidentID='$id'";
$result=mysql_query($query);
答案 1 :(得分:1)
if($result=mysql_query($query))
将始终返回true,因为它只是一个赋值
答案 2 :(得分:0)
你已经忘记了&#39;&#39;标记包含id并检查您的查询是否执行以及是否有任何结果使用此
row = mysql_fetch_row($result);
if(!(is_empty($row)){
$query2=mysql_query("DELETE FROM incidenten WHERE incidentID='$id'");
}
答案 3 :(得分:0)
首先是行
$result=mysql_query($query);
if($result=mysql_query($query)){
$query2=mysql_query("DELETE FROM incidenten WHERE incidentID=$id");
}
将执行$query
两次。所以,你应该省略第一行,因为if($result=mysql_query($query))
就够了。
除此之外,检查$result
或true
上的false
只会告诉您是否发生错误。您应该做的是使用INSERT
检查mysql_affected_rows
语句是否影响了任何行:
if($result=mysql_query($query)){
if(mysql_affected_rows($connect_mysql) > 0) {
if($result2=mysql_query("DELETE FROM incidenten WHERE incidentID='".mysql_real_escape_string($id)."'") {
/* The query did not return errors */
}
else { /* add error handling here */ }
}
}
else { /* add error handling here */ }
请注意:
$query2
重命名为$result2
,因为该变量不包含查询,但查询结果$_GET
参数放入查询中而不转义它。这使SQL Injection变得尽可能简单!我添加mysql_real_escape_string
函数是一种很容易避免SQL注入的简单方法。您也应该在INSERT
语句中添加此函数。mysql_*
功能。这些已弃用,不应再使用。见here。使用mysqli
函数或PDO
istead。