为什么不工作INSERT和UPDATE?

时间:2013-04-15 12:19:28

标签: php mysql sql

我有这个。我正在用文件扫描一个目录(例如:.count.php.2013-04-11_151028.bak)。从文件名我只需要日期和时间,我想将它们插入数据库 - 表(table2)与2个字段(file_date -t​​imestamp,count-int)。计算验证该文件夹中的日期的次数(例如:如果5个文件名称包含一些日期计数将为5.如果文件中的日期没有在db中有记录,则将插入日期并且计数将为1.)。所有插入的文件都将从源目录中删除到另一个,因为我不想一直扫描相同的文件。

$ dir =“route1”; $ files = scandir($ dir);

foreach ($files as $file_name)
{
$data = '';
$an = substr($file_name, -21, 4);
$luna = substr($file_name, -16, 2);
$zi = substr($file_name, -13, 2);
$ora = substr($file_name, -10, 2);
$min = substr($file_name, -8, 2);
$data = $an. '-' .$luna. '-' .$zi. ' ' .$ora. ':' .$min.':'.'00';

if(strtotime($data) == FALSE )  continue;

$result = mysqli_query($con,"SELECT count(*) as total FROM table2 WHERE file_date='$data'");
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);

if($row >0) {
mysqli_query($con, "UPDATE table2 SET count=count+1 WHERE file_date='$data'");
        }
else    {
mysqli_query($con,"INSERT INTO table2 (file_date, count) VALUES ('$data',1)");

$source = "route1";
$destination = "route2";

foreach ($files as $file) {
    if (in_array($file, array(".",".."))) continue;

    if (copy($source.$file, $destination.$file)) {
     $delete[] = $source.$file;
            }
            }
foreach ($delete as $file) {
        unlink($file);
            }   
        }
}

2 个答案:

答案 0 :(得分:1)

count()reserved keyword。你需要把它放在刻度线中:

UPDATE table2 SET `count`=`count`+1 WHERE file_date='$data'
INSERT INTO table2 (file_date, `count`) VALUES ('$data',1)

答案 1 :(得分:1)

我发现了问题,是这样的: 替换线:       if($ row> 0)

使用:       if($ row ['total']> 0)。

问题已经完成!插入和更新工作。谢谢!