复制文本文件的内容并插入到数据库表中,其中给定列等于te文本文件的标题

时间:2017-04-07 15:27:53

标签: php mysql file multiple-files

我有一个包含文本文件的文件夹。文本文件是在用户提交表单数据时创建的,并且是根据特定列的用户输入命名的,我想使用这些文件内容使用where子句更新数据库中的一个表,其中包含两个条件,首先是电子邮件用户对应于表中的email列,第二个对应于表中的文件标题对应title列。对于每一行,我希望将其标题所对应的文件内容保存在seen列中。

我正在使用以下代码,但它无效

$size = "";

$dir = "counters/ads";

if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
    if($file == '.' || $file == '..') continue;

    $myFile = "$dir/$file";
    $fh = fopen($myFile, 'r');

    $size = filesize($myFile);
    if ($size > 0) {
    $content = fread($fh, $size);

    $name = $file;

    }
    $target = $row2['target'];
    $progress = ($content/$target)*100;
    // Check connection     
    $result3=mysqli_query($db_handle,"UPDATE advert SET seen='$content', progress='$progress', counter='$name' WHERE email='".$email."' && title='".$title."'");


    fclose($fh);
}
closedir($handle);
}

但是,当我删除标题where条件时,查询会通过将$name插入counter列来更新表格,但它不会将$content更新为seen

请知道如何解决这个问题

1 个答案:

答案 0 :(得分:2)

代码的问题是WHERE子句之前的分号:

counter='$name';

它终止了这个过程。你需要删除它。

由于分号在PHP中是一个完全有效的字符,因此它不会抛出错误。

它的名称是"声明的结尾"字符。

参考:

  

与在C或Perl中一样,PHP要求在每个语句结尾处以分号结束指令。 PHP代码块的结束标记自动表示分号;您不需要使用分号终止 PHP块的最后一行。块的结束标记将包括紧接着的新行(如果存在)。"

最好使用PHP的错误报告和mysqli_error()查询错误,以防万一。

参考文献: