以前,我有两个桌子。 我有一个php脚本,可以将一个表的内容复制到表2,以标识要复制的ID,我制作了一个CSV文件,以检查插入ID的最后一行,如下所示:
-t
以前,我通过使用fopen分别为0和1来使用csv的索引检查最后一个ID。
但是现在我还有另一个表3要复制到表2,并且过程相同。但是,当我为新表编写时,它会被覆盖,因此我无法识别上一个表。如果我追加它,文件将得到扩展。有什么办法可以将表1的内容放在第一行,将表2的最后一个id放在第二行,作为
"Date",lastid(int)
并为表1取0、1,为表2取2,3,即使先完成表2。
"Date",lastid(int), // for t1 copied to t2
"Date",lastid(int) // for t3 copied to t2
通过
调用public function writeNumberOfRowsCopiedForTable2FromTable1($row_write)
{
$file = fopen('rowsCopied.csv', 'w+');
fputcsv($file, $row_write);
fclose($file);
}
从t1中获取t2中插入值的值
writeNumberOfRowsCopiedForTable2FromTable1([$this->global_date, $last_row_copied]);
希望我解释了这个问题。 有人知道答案吗?
答案 0 :(得分:0)
我写了一些方法,这些方法应该可以满足您的需求。您需要将它们与您当前的使用方式集成在一起,但这只是为了我可以自己对其进行测试。
每个方法都有一个$rowNumber
参数,这是存储文件中要为其设置/获取值的行。在代码中它会对其进行调整,因此第1行实际上是数组的元素0。我使用file()
读取整个文件,然后获取/设置您感兴趣的行。在writeNumberOfRowsCopied
方法中,然后使用file_put_contents()
将整个文件写成一个转到(插入文件的行)。
function writeNumberOfRowsCopied($rowNumber, $row_write)
{
$fileName = 'rowsCopied.csv';
$file = file($fileName, FILE_IGNORE_NEW_LINES);
$file[$rowNumber-1] = implode(",", $row_write);
file_put_contents($fileName, implode(PHP_EOL, $file));
}
function getLastRowCopied($rowNumber)
{
$fileName = 'rowsCopied.csv';
$file = file($fileName, FILE_IGNORE_NEW_LINES);
$row = explode(",", $file[$rowNumber-1]);
return (int)$row[1];
}
writeNumberOfRowsCopied(2, ["aa", 22121]);
print_r(getLastRowCopied(2));