我试图在这里插入两个表,一个是创建一个文档,它进入我的doc_list表,另一个从复选框中获取ID,并将它们发布到连接表中。
问题是连接表需要一个id来形成我正在创建的帖子,但我根本无法提供它,所以我收到了错误。
问题在于:$docId = $dbh->lastInsertId();
SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(
dashboardr
。cat_doc_link_table
,CONSTRAINTcat_doc_link_table_ibfk_2
FOREIGN KEY({{ 1}})参考link_doc_id
(doc_list
)ON UPETE CASCADE ON UPDATE CASCADE)
如果我将其更改为:doc_id
SQLSTATE [23000]:完整性约束违规:1048列'link_doc_id'不能为空
以下是我发布的表格:
$docId = $_POST["doc_id"];
以下是操作表单的脚本:
<?php include 'header.php'; ?>
<?php
require_once '../../db_con.php';
try{
// Selecting entire row from cat_list table
$results = $dbh->query("SELECT * FROM cat_list");
}catch(Exception $e) {
echo $e->getMessage();
die();
}
$category = $results->fetchAll(PDO::FETCH_ASSOC);
?>
<h3 class="subTitle">
<i class="fa fa-pencil"></i></span> Create New Document
</h3>
<form action="actions/newDocAdd.php" method="post" id="rtf" name="">
<input type="text" name="doc_title" id="doc_title" required="required" placeholder="Document Title"/><br />
<input type="hidden" name="action" value="doc_id"/>
<label><input type="checkbox" name="" class="selectall"/> Select all</label>
<div id="checkboxlist">
<?php
foreach($category as $cat){
?>
<input type="checkbox" value="<?php echo $cat["cat_id"]; ?>" name="cat_no[]"><?php echo $cat["cat_title"]; ?></a>
<br>
<?php
}
?>
</div>
<textarea name="doc_content" id="doc_content" placeholder="Document Content" style="display: none;"></textarea>
<iframe name="editor" id="editor" style="width:100%; height: 600px;"></iframe>
<br><br>
<input onclick="formsubmit()" type="submit" value="Create Document" name="submit"/>
</form>
我对关系表相当新,所以请保持温和,因为我真的想了解错误以及如何纠正这个问题,因为我非常接近解决问题。
答案 0 :(得分:2)
试试这个:
Calendar now = Calendar.getInstance();
Calendar tomorrow = (Calendar)now.clone();
tomorrow.add(Calendar.DATE, 1);
答案 1 :(得分:1)
在尝试使用INSERT
之前,您需要执行第一个$dbh->lastInsertId
。
$sql = "INSERT INTO doc_list (doc_title, doc_content, doc_created, user_id)
VALUES (:doc_title, :doc_content, NOW(), :user_id)";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(':doc_title' => $_POST["doc_title"],
':doc_content' => $_POST["doc_content"],
':user_id' => $_SESSION["user"]));
$docId = $dbh->lastInsertId;
此代码应位于代码中的foreach
循环之前。你应该摆脱对$dbh->query($sql)
的呼吁。