我有一个包含文本文件的文件夹。文本文件是在用户提交表单数据时创建的,并且是根据特定列的用户输入命名的,我想使用这些文件内容使用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
列
请知道如何解决这个问题
答案 0 :(得分:2)
代码的问题是WHERE
子句之前的分号:
counter='$name';
它终止了这个过程。你需要删除它。
由于分号在PHP中是一个完全有效的字符,因此它不会抛出错误。
它的名称是"声明的结尾"字符。
参考:
与在C或Perl中一样,PHP要求在每个语句结尾处以分号结束指令。 PHP代码块的结束标记自动表示分号;您不需要使用分号终止 PHP块的最后一行。块的结束标记将包括紧接着的新行(如果存在)。"
最好使用PHP的错误报告和mysqli_error()
查询错误,以防万一。
参考文献: