我使用PHPExcel包将.xls文件中的数据导入我的数据库。文件不时更新,所以我必须再次导入。在导入之前,我检查数据库是否已包含.xls文件中包含的任何数据。
在大多数情况下,它可以工作 - DB中已包含的数据被省略,但仍有一些值是重复的。
这就是我的所作所为:
1.查询DB:SELECT * FROM Table1
,将结果提取到数组
2. PHPExcel用法,获取变量的行值,检查数组中是否已存在该值
3.如果是 - 跳过,如果没有 - 添加到DB。
但是有一个值“包含在数组中的名称(xxx yyy zzz)”(我使用if ($array[0] == "The name (xxx yyy zzz)")
并返回true),但PHP函数array_search
仍无法找到它。
我使用trim
但仍然没有。 var_dump
变量,实际值和索引值相同。 similar_text($array[0], "The name (xxx yyy zzz)")
返回2.
请帮助,我没有想法。
答案 0 :(得分:1)
2个已知问题:
<强> 1 强>
我曾经遇到过类似的问题。最后的问题是导入的数据是使用不正确的编码读取的。它导致以下结果:
echo $str1; // output: foo
echo $str2; // output: foo
echo $str1 == $str2 ? "The same" : "Not the same"; // output: Not the same
在我做完以下事情后,我才明白这一点:
for($i = 0; $i < strlen($str1); $i++) echo ord($str1[$i])." "; // 102 111 111
for($i = 0; $i < strlen($str2); $i++) echo ord($str2[$i])." "; // 102 0 111 0 111 0
我猜你正在遇到类似的事情。
<强> 2 强>
另一种可能性是在评论中建议您在字符串中包含HTML。要在公开场合解决这个问题,请执行以下操作:
echo htmlspecialchars($str1); // foo
echo htmlspecialchars($str2); // <span>foo</span>
和/或在浏览器中查看HTML页面的来源。
答案 1 :(得分:1)
最好使用MySQL来做到这一点:
ALTER IGNORE TABLE your-table ADD UNIQUE INDEX idx ( uniqueField, orFields );
这将删除字段或字段相同的所有重复项。完成后删除索引:
ALTER TABLE your-table DROP INDEX idx