php - 仅从数据库检索新数据

标签 php mysql sql database relational-database

我正在开发一个 Android 应用程序,它可以激发投票通知功能。因此,我创建了一个不断向服务器询问新数据的服务。不过,我在数据库中使用了一个名为 Seen 的表。服务器用于向该表询问特定的 user_id,如果该表中不存在 news_id,则会生成通知。

问题是当我第一次启动应用程序时。它从数据库中检索所有数据,因为考虑用户的服务器没有看到新闻。

有人可以帮助我吗?

我想通过这个想法来解决它:当我第一次启动应用程序时。将具有该 user_id 的所有新闻插入到 saw 表中,以获得 0 条新消息。但我认为这不会有效。

这是我的数据库和 PHP 脚本

用户表

User_ID | User_Name
--------------------
1       | John
2       | Carl
3       | Tomas
4       | Adam
5       | Nancy

新闻表

News_ID | News_Text      | news_date          
---------------------------
1       | Hello World    | CURRENTDATE()
2       | This is My car | CURRENTDATE()
3       | I had Ate pizza| CURRENTDATE()
4       | Leave Me Alone | CURRENTDATE()
5       | C++ Programming| CURRENTDATE()

已见表格

ID   | User_Id  | News_Id
---------------------------
1    |  1       | 2
2    |  1       | 3
3    |  4       | 1
4    |  5       | 3
5    |  1       | 4

这是我的 PHP 代码,它还显示了我的查询以获取未在 Seen_news 表中显示的新闻:

<?php

require('config.php');
$conn = mysqli_connect($servername, $username, $password, $db);
$query="SELECT * FROM news WHERE news_id NOT IN (SELECT news_id FROM news_seen WHERE user_id = '".$_GET['id']."')";

$result = mysqli_query($conn,$query);
$rows = array();
echo mysqli_error($conn);

while($row = mysqli_fetch_assoc($result)) { 
    $rows[] = $row;
}

echo json_encode($rows);
?> 

假设我将 User_Id 发送到 PHP 脚本,并根据结果查询将显示 json 文件。

最佳答案

如果您可以将 create_date 列添加到“Users”表中,则可以选择“Seen news_date”大于“User create_date”的位置。

类似于:

"SELECT * FROM news WHERE news_id NOT IN (SELECT news_id FROM news_seen WHERE user_id = '".$_GET['id']."') AND news_date > (SELECT create_date FROM user WHERE user_id = '".$_GET['id']."')"

关于php - 仅从数据库检索新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36377885/

相关文章:

php - 使用vuejs发送电子邮件

php - 从分解的字符串中删除空数组元素

php - Mysql联合查询重复行

php 更新不起作用

sql - Hibernate 性能调整

java - 通过可调用语句从 Java 调用存储过程时出错

php - PHP 中单引号和双引号字符串有什么区别?

php - 如何使用 php 创建日期范围?

asp.net - 生产环境中无法连接到任何指定的 MySQL 主机问题

c# - 尝试插入两个字母的字符时,指定的转换无效