php - INSERT INTO 不同数据库表中的不同字段

标签 php mysql sql

我对 sql INSERT INTO 很困惑。我需要加入JOIN吗?或 INNER JOIN 当我要放入不同的表时?

$sqlinsert = "INSERT INTO forum_topic (topic_title, topic_message, thread_id) 
VALUES 
('$topic','$message','$thread_id')";

我知道这段代码仅适用于一张表,但不适用于两张表。然而,我想要的是$message到其他表中的 post_message 中。

forum_topic表中,有post_idpost_message日期topic_id.

但是有一个 forum_post 表,我想在其中放置 $message进入forum_post中的post_message

因此,在 forum_post 表中,有 post_idpost_messagedatetopic_id

那么我需要 JOIN 还是 INNER JOIN ?我不知道应该对它们编码哪一个。

PS:我知道这个问题对你来说很难理解。我多么希望我可以放图片,但我没有 10 个声誉,所以我决定这样做。

最佳答案

您无法使用一个查询插入多个表,但您可以使用事务来确保操作是原子的。

BEGIN;
Your queries here
COMMIT;

当您需要执行多个相互依赖的查询时,其中一些查询可能会导致错误。因此,为了保持数据库的一致性,您希望以全有或全无的方式执行它们(您可以阅读 ACID )。 MySQL 也支持事务,但仅支持其某些存储引擎(例如 InnoDB,但不支持 MyISAM)。

使用的伪代码如下所示。

start transaction
try {
  execute query 1
  execute query 2
  ...
  commit transaction
catch {
  rollback transaction
}

如果您使用 PDO,请查看这些 functions 。 如果是 mysql_query,您可以使用 mysql_query("开始事务"); mysql_query("COMMIT"); mysql_query("ROLLBACK");

关于php - INSERT INTO 不同数据库表中的不同字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21432209/

相关文章:

php - 使用 PHP 检查 MYSQL 上的 TIME 字段

通过 chromebook 终端访问的远程机器上的 MySQL 返回无意义的 unicode,它在我离开 MySQL 后仍然存在

PHP MySQL PDO - 多个 WHERE AND OR

sql - 使用 CTE 删除比在 Postgres 中使用临时表慢

php - 合并两个字段的日期和时间,然后插入表的第三个字段

php - 在 laravel 中显示数据库中的选定选项

php - 如何通过分页在 laravel 中按关系排序数据

javascript - 使用 PHP 的 AJAX - 不同的结构方式?

sql - 我如何获得带有 ORDER BY 的 postgres 查询以进行仅索引扫描?

sql - 显示所有外键 - SQL Anywhere