gpt4 book ai didi

php - 使用 INNERJOIN INSERT、UPDATE、DELETE 多个标签输入

转载 作者:行者123 更新时间:2023-11-29 19:11:53 25 4
gpt4 key购买 nike

来自这样的表单

<?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 表中的所有选项?我也许可以理解如何使用内爆和爆炸来插入它,但是更新和删除,无法弄清楚如何有效地做到这一点。

最佳答案

所以您提到您正在使用 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
}
?>

此代码旨在创建并执行具有两个或多个插入语句的查询,该查询将添加新帖子并关联正确的标签。您可以使用 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 即可创建查询。我希望这有帮助

关于php - 使用 INNERJOIN INSERT、UPDATE、DELETE 多个标签输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com