PHPExcel从xlsx文件中将48行中的38行插入MySQL

时间:2016-08-04 13:58:34

标签: php mysql excel phpexcel-1.8.0

我正在尝试将包含48行的excel文件中的文本(UTF-8 Encoded)插入到MySQL表中。只插入了38行。有些行有特殊字符,如“/”,“?”,“:”,“,”,“。”,“()”,“'”,“”“,”!“。

foreach ($ret as $rec) {
    if($count == 0) {
        $count++;
        continue;
    }

    $insert = "INSERT INTO chall (description, time, coin, mode, kids, teens, adults, theme_id, type_id) VALUES ('{$rec['A']}', '{$rec['B']}', '{$rec['C']}', '{$rec['D']}', '{$rec['E']}', '{$rec['F']}', '{$rec['G']}', '{$_REQUEST['theme_id']}', 1)";
    $ins_query = mysql_query($insert) or mysql_error();
    if(0)
    {
        die("Error! Can Not Upload Data...");
    }
}

以下是成功插入数据库的文本示例: 假装为E!新闻。这是一个例子。请两个人快速回答这个问题:“其中哪些不是颜色 - 黑色,棕色,口香糖,蓝色,吉姆,蓝色或绿色?”

以下是未插入数据库的示例: 齐格-A-锯齿啊!获取一组芽来重新进行此测试,并在公共环境中由Spice Girls重制视频。让陌生人参与其中!

我尽可能多地研究,但没有找到任何答案。其中10行未插入db表。有什么我想念的吗? 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这是不正确的:

$ins_query=  mysql_query($insert) or mysql_error();
                                   ^^^^^^^^^^^^^^

mysql_error()返回一个字符串。这意味着如果mysql_query()失败(并返回布尔值false,则将错误字符串分配给$ins_query。这意味着$ins_string不能是布尔值false,这就是你应该测试以检测故障。

然后

if(0)

将始终评估为false并且不执行die,因此您无法检测错误发生的时间。

你应该

 $result = mysql_query(...);
 if($result === false) {
     die(mysql_error());
 }

请注意,您很容易受到sql injection attacks的攻击。<​​/ p>

答案 1 :(得分:0)

你应该将你的mysql_error修复为@Marc推荐

此外,您应该使用fgetcsv函数来解析文件,并检查每行上是否有正确数量的字段。

因为这个

  

$ _ REQUEST [&#39; theme_id&#39;]

恶意用户可以在查询中注入他想要的任何内容(sql注入)。

永远不要相信用户发送的内容