【发布时间】:2020-07-02 08:55:52
【问题描述】:
我知道这个问题已经在 Stack Overflow 上被多次问过,但即使在仔细阅读了所有这些问题之后,我也无法找出我的代码存在的问题。我正在将一个表中的记录插入到另一个表中,但 MySQL 在新表中插入 2 行而不是 1 行。我正在使用 php 准备好的语句插入数据库。我的PHP代码如下:
if(isset($_POST["articleID"]) && isset($_POST["action"]))
{
$articleID = $_POST["articleID"];
$action = $_POST["action"];
if($action == "publish" && $infoUserRank >= 2)
{
$article_sql = "UPDATE blog_db.draft_articles SET status = 1 WHERE articleID = :articleID";
$article_stmt = $pdo->prepare($article_sql);
$article_stmt->bindValue(':articleID', $articleID);
$article_stmt->execute();
header("Location: http://localhost/admin/pending");
exit();
}
else if($action == "examine" && $infoUserRank >= 3)
{
//This is the statement which inserts two records instead of one
$insertarticle_sql = "INSERT INTO blog_db.articles (userID, full_title, short_title, meta_desc, meta_keywords, cover_pic, content, html_content, main_category) SELECT userID, full_title, short_title, meta_desc, meta_keywords, cover_pic, content, html_content, main_category FROM blog_db.draft_articles WHERE articleID = :articleID";
$insertarticle_stmt = $pdo->prepare($insertarticle_sql);
$insertarticle_stmt->bindValue(':articleID', $articleID);
$insertarticle_stmt->execute();
$insertsubcat_sql = "INSERT INTO blog_db.article_subcategories (articleID, subCategoryID) SELECT articleID, subCategoryID FROM blog_db.draftarticle_subcategories WHERE articleID = :articleID";
$insertsubcat_stmt = $pdo->prepare($insertsubcat_sql);
$insertsubcat_stmt->bindValue(':articleID', $articleID);
$insertarticle_stmt->execute();
$deletedraft_sql = "DELETE FROM blog_db.draftarticle_subcategories WHERE articleID = :articleID";
$deletedraft_stmt = $pdo->prepare($deletedraft_sql);
$deletedraft_stmt->bindValue(':articleID', $articleID);
$deletedraft_stmt->execute();
$deletedraft_sql = "DELETE FROM blog_db.draft_articles WHERE articleID = :articleID";
$deletedraft_stmt = $pdo->prepare($deletedraft_sql);
$deletedraft_stmt->bindValue(':articleID', $articleID);
$deletedraft_stmt->execute();
header("Location: http://localhost/admin/published");
exit();
}
}
以及提交此表单的 html 代码:
<div id="confirm-box" class="confirm-popbox">
<div class="confirm-popbox-div">
<span id="confirm-close-btn" class="confirm-close-btn"><i class="fas fa-times"></i></span>
<div class="confirm-main-head"><i class="fas fa-check-square"></i> Confirmation Box</div>
<hr class="confirm-box-hr" />
<div class="confirm-main-content">Are you sure you want to publish this article? Once you press on confirm button you can't undo your action.</div>
<div class="confirm-box-btns">
<form action="http://localhost/admin/config/article-publish.php" method="POST" id="articlePublishForm1">
<div id="confirm-cancel-btn" class="publish-confirm-btn1"><i class="fas fa-times"></i> Cancel</div>
<div id="confirm-publish-btn1" name="publishSubmit" class="publish-confirm-btn1 pub-purple-btn"><i class="fas fa-check"></i> Confirm</div>
</form>
</div>
</div>
</div>
<script>
$(document).on('click', '#confirm-publish-btn1', function(){
$("#articlePublishForm1").append('<input type="hidden" name="articleID" value="<?php echo $articleID; ?>" /> ');
$("#articlePublishForm1").append('<input type="hidden" name="action" value="<?php echo $action; ?>" /> ');
$("#articlePublishForm1").submit();
});
</script>
我还尝试在我的 php 代码中添加 exit() 以检查它是否被调用了两次,但 mysql 仍然插入两行而不是一行。我的插入代码有问题吗?非常感谢您的帮助。
【问题讨论】:
-
您的文章 ID 可能重复。