php - 如何创建插入表,其中部分数据来自一张表,其余数据已填充

标签 php mysql

我有表消息,我正在尝试向用户创建新消息。算法如下:

1) 获取所有用户的电子邮件(它们充当用户 ID,并且是表 user 中的主键)

2) 对于每封电子邮件插入消息(全部相同),标记已读取 (false) 和时间 (NOW())

如何做到这一点?我写了接下来的内容,但我确信这样的行是错误的。

INSERT INTO `messages` (`email`, `message`,`isread`,`createdat`) SELECT DISTINCT `email` FROM `users`, ?, false, NOW()

附注我通过 PHP 执行此操作,所以?将是消息文本。 对于消息,主键是 id,即 AUTO_INCRMENT。数据库:MySQL

最佳答案

将您的文字值添加到 select 子句中,如下所示。

看看这个 sqlFiddle

INSERT INTO `messages` (`email`, `message`,`isread`,`createdat`) 
SELECT DISTINCT `email`, '?', false, NOW() 
FROM `users`

同样的事情,但是在 PHP 中

<?php

  $myMessage ="...";

  $sql = sprintf("
                  INSERT INTO `messages` (`email`, `message`,`isread`,`createdat`) 
                  SELECT DISTINCT `email`, '%s', false, NOW() 
                  FROM `users`", 
                  $myMessage);

关于php - 如何创建插入表,其中部分数据来自一张表,其余数据已填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910997/

相关文章:

php - 如何在 oracle 数据库中正确显示日文字符

php - 使用第一个查询的结果的查询中的第二个查询

mysql - 如何对 SQL 结果进行分组

mysql - 需要查询数据库

php - 谷歌地图 jquery 插件,带有 json、php、mysql 覆盖标记

php - 自动加载本地 Composer 包

php - 连接到数据库 Symfony 4 Flex

php - 只显示月份和日期

mysql - 如何恢复前一天的mysql数据库

mysql - 文档显示 CakePHP 不支持组合键