来自这样的表格
<?php
if(isset($_POST['submit'])){
$tags = $_POST['tags'];
?>
<form method="post">
<select name="tags" multiple>
<option>PHP</option>
<option>HTML</option>
<option>CSS</option>
</select>
<button type="submit" name="submit">
</form>
表:
[ POSTS ] [ TAGS ] [ POSTS_TAGS ]
| id | title | | id | name | | id | post_id |tage_id |
|----|----------| |----|-------| |----|----------|--------|
| 1 | PHP7 | | 1 | PHP | | 1 | 1 | 1 |
| 2 | HTML | | 2 | HTML | | 2 | 1 | 2 |
| 3 | CSS3 | | 3 | CSS | | 3 | 1 | 3 |
_________________ ______________ | 4 | 2 | 2 |
| 5 | 2 | 3 |
| 6 | 3 | 3 |
__________________________
如何在POSTS_TAGS表中插入,更新,删除所有options
?我也许可以理解如何使用内爆和爆炸插入它,但更新和删除,无法弄清楚如何做到这一点。
答案 0 :(得分:0)
所以你提到你使用的是phpMyAdmin,它是MySQL数据库的用户界面。如果您尝试使用表单操作该数据库中的记录,则需要将其提交到php脚本,该脚本将运行您要查找的查询。我更新了您的表单以包含帖子标题,并将操作发送到submit.php。您也可以通过其他方式提交表单,但对于此示例,我将坚持使用HTML默认值:
<form method="post" action="submit.php">
<input type="text" name="title">
<select name="tags" multiple>
<option value="1">PHP</option>
<option value="2">HTML</option>
<option value="3">CSS</option>
</select>
<button type="submit" name="submit">
</form>
在submit.php中,您将处理表单中的数据并运行您的SQL查询。
<?php
//connect to mysql
$con = mysqli_connect("localhost","user","password","db_name");
//collect data from form
$tags = explode(",",$_POST['tags']);
$title = mysqli_escape_string($_POST['title']);
//create sql statements
$sql = "INSERT INTO Posts (title) VALUES ('$title'); SET @pid = LAST_INSERT_ID();";
// add insert statement for each selected tag
foreach($tags as $tag){
$sql .= "INSERT INTO Posts_Tags (post_id,tag_id) VALUES(@pid,".mysqli_escape_string($tag).");";
}
// Run the complete query
$result = mysqli_multi_query($con,$sql);
if($result){
//success
}else{
//error
}
?>
此代码用于创建和执行包含两个或多个insert语句的查询,这些语句将添加新帖子并关联正确的标记。您可以使用phpMyAdmin测试sql,如下所示:
INSERT INTO Posts (title) VALUES ('Post Title');
SET @pid = LAST_INSERT_ID();
INSERT INTO Posts_Tags (post_id,tag_id) VALUES(@pid,1);
INSERT INTO Posts_Tags (post_id,tag_id) VALUES(@pid,2);
您可以执行类似于处理更新和删除的操作,但是在更新查询的情况下,将需要一些额外的逻辑来测试Posts_Tags中的记录,因为删除了关联,所以需要删除这些记录。删除将非常简单:
DELETE FROM Posts WHERE id = 1; DELETE FROM Posts_Tags WHERE post_id = 1;
您只需要从删除表单提交帖子ID即可创建查询。我希望这有帮助