检查上传的CSV文件是否在其文件名中包含这些字符后,我尝试将CSV文件中的值插入到我的数据库中。因此,如果文件名在其文件名中包含 m1 ,我将在我的数据库表中插入/更新这些字段,对于 m2 , m3 的文件也是如此,以及 m4 的文件名。这是代码:
echo $query;
问题:我可以成功上传任何文件。问题是,如果文件名上有 m1 或 m4 ,我无法在数据库表中插入值(来自csv)。虽然 m2 和 m3 的文件成功地将值(来自csv)插入到数据库表中。当我<script>$(document).ready(function(){$("#popimg").trigger('click')});</script>
时,结果是正确的值。
答案 0 :(得分:0)
这里的问题是strpos()在$ file_m1(如果找到)中返回$ filename的起始位置索引,否则返回false。因此在这段代码中,strpos()有时会返回0(在if语句中引用时会被强制为false)。这就是代码无法正常工作的原因。
正确的解决方案是将strpos()返回的值显式比较为false,如下所示:
替换所有:
strpos($filename , $file_m1)
和其他表达式如下:
strpos($filename , $file_m1) !== false
请注意,我们使用的是!==运算符,而不仅仅是!=运算符。如果我们使用!=,我们将回到在布尔表达式中引用时0被强制为false的问题,因此0!= false将评估为false。