[英]how to insert and delete row data same time
嗨,這是我的代碼,用於將數據插入數據庫表,我想從一個表中刪除數據,然后在另一個表中插入數據
<form action="page1.php" method="POST">
<input type="checkbox" name="chk1" value="one" /> <br/>
<input type="submit" name="submit" value="submit"/>
</form>
</body>
</html>
<?php
include 'config.php';
session_start();
$user=$_SESSION['sess_user'];
$checkbox1=$_POST['chk1'];
if ($_POST["submit"]=="submit")
{
$result = mysql_query("SELECT std_id,course_name,stdname FROM course_entry WHERE course_id = '".$checkbox1."' and username= '".$user."'");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0]; echo $row[1];
echo $row[2];
$query= "INSERT INTO course_finish (course_id,course_name,username,finishdate) values ('".$row[0]."','".$row[1]."','".$row[3]."',now())";
"delete from course_entry where (course_id,username) values ('".$checkbox1."','".$user."'";
mysql_query($query) or die (mysql_error());
echo "Record is inserted";
header("Location: profile.php");
}
?>
在數據庫中插入課程_finish已成功完成,但在course_entry表中未刪除該行
您刪除的查詢必須看起來像:
delete from course_entry where course_id = ".$checkbox1." and username ='".$user."'
第二件事,不建議使用mysql_ *接口。 您應該使用mysqli *或更好的pdo和准備好的語句
$query= "INSERT INTO course_finish (course_id,course_name,username,finishdate) values ('".$row[0]."','".$row[1]."','".$row[3]."',now())";
mysql_query("delete from course_entry where course_id='".$checkbox1."'");
從更改您的刪除語句
delete from course_entry where (course_id,username) values ('".$checkbox1."','".$user."'"
至
delete from course_entry where course_id='".$checkbox1."' and user_name='".$user."'
嘗試這個:
$insertQuery = "INSERT INTO course_finish (course_id,course_name,username,finishdate) values ('".$row[0]."','".$row[1]."','".$row[3]."',now())";
mysql_query($insertQuery) or die (mysql_error());
$deleteQuery = "DELETE from course_entry where course_id = '".$checkbox1."' AND username = '".$user."'";
mysql_query($deleteQuery ) or die (mysql_error());
Als注意$checkbox1
的值將為one
。 我不知道course_id
的類型,但是如果它是int
類型,它也不會成功。
完整解決方案
<?php
<form action="page1.php" method="POST">
<input type="checkbox" name="chk1" value="one" /> <br/>
<input type="submit" name="submit" value="submit"/>
</form>
</body>
</html>
<?php
include 'config.php';
session_start();
$user=$_SESSION['sess_user'];
$checkbox1=$_POST['chk1'];
if ($_POST["submit"]=="submit")
{
$result = mysql_query("SELECT std_id,course_name,stdname FROM course_entry WHERE course_id = '".$checkbox1."' and username= '".$user."'");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0]; echo $row[1];
echo $row[2];
$query= "INSERT INTO course_finish (course_id,course_name,username,finishdate) values ('".$row[0]."','".$row[1]."','".$row[3]."',now())";
$deletequry=mysql_query("delete from course_entry where course_id='".$checkbox1."'");
mysql_query($query) or die (mysql_error());
if($deletequry){
echo "deleted";
}
echo "Record is inserted";
header("Location: profile.php");
}
?>
令我驚訝的是,其他答案都沒有涵蓋准備好的陳述 ! 這在這里非常重要,因為您需要接受用戶輸入,這可能由於SQL注入而很危險。
這是我推薦的方法(OOP風格):
<?php
$db = new mysqli(HOST, USERNAME, PASSWORD, DBNAME);
$db->set_charset('utf8');
$stmt1 = $db->prepare("SELECT std_id,course_name,stdname FROM course_entry WHERE course_id = ? and username = ? LIMIT 1");
$stmt1->bind_param('is', $checkbox1, $user);
$stmt1->execute();
$result1 = $stmt1->get_result();
$stmt1->close();
$row = $result1->fetch_row();
$stmt2 = $db->prepare("INSERT INTO course_finish (course_id,course_name,username,finishdate) values (?, ?, ?, NOW())");
$stmt2->bind_param('iss', $row[0], $row[1], $row[2]); //i think it's $row[2], not $row[3]
$stmt2->execute();
$stmt2->close();
$stmt3 = $db->prepare("delete from course_entry where (course_id, username) values (?, ?)");
$stmt3->bind_param('is', $checkbox1, $user);
$stmt3->execute();
$stmt3->close();
$db->close();
也許您不喜歡該代碼(我也不喜歡,但是因為我不喜歡mysqli haha),但實際上建議您盡可能使用准備好的語句。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.