仅从数据库中检索新数据

时间:2016-04-02 19:36:53

标签: php mysql sql database relational-database

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

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

如果有人可以帮助我吗?

我想通过这个想法解决它:当我第一次启动应用程序时。使用该user_id在所见表中插入所有新闻,以获得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文件。

1 个答案:

答案 0 :(得分:1)

如果您可以将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']."')"