如何避免使用php在SQLite表中添加冗余数据?

我正在处理如下所示的 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表中的内容应该是:


36031.mp4  Go

hello.mp4  Go

hxz210.mp4 Go


慕尼黑的夜晚无繁华
浏览 119回答 1
1回答

小怪兽爱吃肉

您的选择很好,但您需要将结果存储到一个变量中,例如:$count = $db->querySingle("SELECT COUNT(*) as count FROM Podcast_Export WHERE House_number = '".$value."'");&nbsp;if($count <= 0){&nbsp;&nbsp; &nbsp; $db->exec("INSERT INTO Podcast_Export (House_number,Status)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;VALUES ('".$value."', 'Go')");}使用querySingle获得的行SQLite中无。请注意,我已将House#to House_numberhere 和removeAND status = 'GO'条款更改为所有条款,因为它们都具有GO状态。
打开App,查看更多内容
随时随地看视频慕课网APP