2012-02-18 123 views
1

我正在尝试将SQL查询的结果写入文本文件。写入工作正常,但我希望能够第一次写入所有条目,并随后添加
所有不在文件中的条目。请你知道这可以实现吗?将SQL查询结果写入文本文件

$t = mysql_query("SELECT text FROM transactions") 
     or die("SELECT Error: ".mysql_error()); 


print "<table width=300 border=1>\n"; 
while ($get_info = mysql_fetch_row($t)){ 

$class = $op->classify($field); 

print "<tr>\n"; 
print "\t<td>Transaction</td>\n"; 
foreach ($get_info as $field) 
print "\t<td>$field</td>\n"; 
print "\t<td>Type</td>\n"; 
foreach ($get_info as $field) 
print "\t<td>$class</td>\n"; 
print "</tr>\n"; 


if ($class == "pos") 
{ 
$filep = "positive.txt"; 
$handlep = fopen($filep, 'a'); 
$data = "$field\n"; 
fwrite($handlep, $data); 

fclose($handlep); 


} 
if ($class == "neg") { 

$filen = "negative.txt"; 
$handlen = fopen($filen, 'a'); 
$datan = "$field\n"; 
fwrite($handlen, $datan); 

fclose($handlen); 

} 
+0

你的计划到底是什么。这听起来对我来说是个坏主意! – markus 2012-02-18 23:49:03

+0

为什么不选择所有记录只写文件? – 2012-02-18 23:51:50

+0

我想将所有的初始结果保存到文本文件中,当结果可用时可以添加新的结果而不覆盖或在文本文件中创建重复项。 – user1190466 2012-02-18 23:51:59

回答

1

第一,我无法想象,为什么你会永远要做到这一点,但这里是我会怎么做。

与每个记录,也存储在其中一列的时间戳。每当您查询数据库以查找要写入的新记录时,您都会执行只抓取时间戳晚于平面文件上次修改时间的记录的查询。平面文件当然是你正在写入的文件。

您可以使用简单的filemtime($ filename)来获取文件的上次修改时间。

http://php.net/manual/en/function.filemtime.php

你可能要追加到它,以及根据这些写是如何触发之前得到的文件上的锁。