簡體   English   中英

如何同時插入和刪除行數據

[英]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.

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