【问题标题】:How to avoid adding redundant data in SQLite table using php?如何避免使用 php 在 SQLite 表中添加冗余数据?
【发布时间】:2019-06-19 17:00:42
【问题描述】:

我正在编写如下所示的 php 代码,该代码列出了 $src_dir 中存在的所有 mp4 文件

$src_dir = ('\\\ABCD-ST-001\Audio_Test\podcast\incoming_folder'); 

$mp4_files = preg_grep('~\.(mp4)$~', scandir($src_dir));

print_r(array_values($mp4_files));  // LineA

这是从Line#A获得的O/P

Array ( [0] => 36031P.mp4 [1] => hello.mp4 )

现在,我在我的 php 代码中使用了以下脚本,以便将这些 mp4 文件插入到Podcast_Export 表中。

    foreach ($mp4_files as $value) {
        $db->exec(SELECT COUNT(*) FROM Podcast_Export WHERE House# = '".$value."' AND status = 'GO');
        $db->exec("INSERT INTO Podcast_Export ('House_number', 'Status') VALUES ('".$value."', 'Go')");    // Line B
    }

以上脚本在Podcast_Export表内添加如下数据:

36031.mp4 Go
hello.mp4 Go

问题陈述:

我现在面临的问题是当我刷新页面时,LineB 处的脚本再次运行,并且 $src_dir 中的 mp4 文件再次添加到 Podcast_Export 表中,如图所示下面:

36031.mp4 Go
hello.mp4 Go
36031.mp4 Go
hello.mp4 Go

它应该以这样的方式工作,一旦新文件出现在 $src_dir 中,那么它应该添加到 Podcast_Export 表中。让我们假设新文件是 hxz210.mp4 那么Podcast_Export table 里面的内容 应该是:

36031.mp4  Go
hello.mp4  Go
hxz210.mp4 Go

【问题讨论】:

  • 修改 House# 使其成为唯一值...或更改您的脚本以使其不再运行。
  • 或者查看数据库中的House_Number是否已经存在
  • @user3783243 House# 不是正确的列名,因此我已将其修改为“House_number”。刷新时,脚本应该只在新的 mp4 文件出现时运行。
  • @flash:我再次建议添加一个查询,用于检查记录是否存在link
  • @devpro 我已在问题中添加。让我知道它是否看起来不错。

标签: php sql sqlite


【解决方案1】:

您的选择很好,但您需要将结果存储到一个变量中,例如:

$count = $db->querySingle("SELECT COUNT(*) as count FROM Podcast_Export WHERE House_number = '".$value."'"); 
if($count <= 0){ 
    $db->exec("INSERT INTO Podcast_Export (House_number,Status) 
               VALUES ('".$value."', 'Go')");
}

使用querySingle 获取 SQLite 中的行数。

请注意,我在这里将House# 更改为House_number 并删除了AND status = 'GO' 子句,因为它们都具有GO 状态。

【讨论】:

  • 代码不在第一行之后。我想知道上面代码中的numRows(); 是什么?
  • @flash 使用 numrows 来获取行数,也许语法对于 sqlite 来说是不同的,不是吗?
  • 当我评论这一行时页面开始加载,但是当我取消注释时页面不会加载。
  • @flash 你只需要检查查询返回结果或者你是否需要使用差异。语法但逻辑一致
  • @flash yes ... ... 对
猜你喜欢
  • 1970-01-01
  • 2012-11-17
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2018-05-30
  • 2015-08-12
  • 2011-06-16
相关资源
最近更新 更多