仅从数据库中检索新数据
Retrieve New Data Only From Database
我正在开发一个 android 应用程序来激发轮询通知功能。因此,我创建了一个不断向服务器请求新数据的服务。但是,我在名为 Seen 的数据库中使用了 table。这个 table 用于由服务器询问特定的 user_id,如果 news_id 在 table 中不存在,它将产生一个通知。
问题出在我第一次启动应用程序时。它从数据库中检索所有数据,因为服务器认为用户没有看到新闻。
如果有人可以帮助我?
我想通过这个想法解决它:当我第一次启动应用程序时。插入看到 table 的所有消息 user_id 以获得 0 条新消息。但我认为这将是没有效率的。
这是我的数据库和我的 PHP 脚本
用户table
User_ID | User_Name
--------------------
1 | John
2 | Carl
3 | Tomas
4 | Adam
5 | Nancy
新闻Table
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()
看过Table
ID | User_Id | News_Id
---------------------------
1 | 1 | 2
2 | 1 | 3
3 | 4 | 1
4 | 5 | 3
5 | 1 | 4
这是我的 PHP 代码,它还显示了我的查询以获取未在 Seen_news Table 中显示的新闻:
<?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 列添加到您的用户 table,您可以 select 其中已见 news_date 大于用户 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']."')"
我正在开发一个 android 应用程序来激发轮询通知功能。因此,我创建了一个不断向服务器请求新数据的服务。但是,我在名为 Seen 的数据库中使用了 table。这个 table 用于由服务器询问特定的 user_id,如果 news_id 在 table 中不存在,它将产生一个通知。
问题出在我第一次启动应用程序时。它从数据库中检索所有数据,因为服务器认为用户没有看到新闻。
如果有人可以帮助我?
我想通过这个想法解决它:当我第一次启动应用程序时。插入看到 table 的所有消息 user_id 以获得 0 条新消息。但我认为这将是没有效率的。
这是我的数据库和我的 PHP 脚本
用户table
User_ID | User_Name
--------------------
1 | John
2 | Carl
3 | Tomas
4 | Adam
5 | Nancy
新闻Table
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()
看过Table
ID | User_Id | News_Id
---------------------------
1 | 1 | 2
2 | 1 | 3
3 | 4 | 1
4 | 5 | 3
5 | 1 | 4
这是我的 PHP 代码,它还显示了我的查询以获取未在 Seen_news Table 中显示的新闻:
<?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 列添加到您的用户 table,您可以 select 其中已见 news_date 大于用户 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']."')"