Php 在MySQL中导入Excel工作表时出现奇怪问题

Php 在MySQL中导入Excel工作表时出现奇怪问题,php,mysql,excel,Php,Mysql,Excel,我在使用php脚本将.xlsx文件导入mysql数据库时遇到了一个奇怪的问题 excel文件是从另一台oracle db服务器生成的,正在我的服务器上复制。脚本不会插入任何记录,除非我手动 打开文件 保存它,然后 关上它 这很奇怪,因为我没有对文件做任何更改,根本没有更改。我已经比较了保存文件前后的文件权限,没有任何更改 对于excel文件,我在当前服务器上创建的文件工作正常,没有任何麻烦 数据库文件 // Check connection if ($conn->conne

我在使用php脚本将.xlsx文件导入mysql数据库时遇到了一个奇怪的问题

excel文件是从另一台oracle db服务器生成的,正在我的服务器上复制。脚本不会插入任何记录,除非我手动

  • 打开文件
  • 保存它,然后
  • 关上它
  • 这很奇怪,因为我没有对文件做任何更改,根本没有更改。我已经比较了保存文件前后的文件权限,没有任何更改

    对于excel文件,我在当前服务器上创建的文件工作正常,没有任何麻烦

    数据库文件
        // Check connection
        if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
        }
        else{
            echo "Connection Made Succesfully !!!";
        }
    ?>
    
    代码示例

    <?php
    include 'db.php';
    if (isset($_FILES['file'])) {
        IF($_POST["TotalCol"] && $_POST["TableName"])
        {
            require_once "simplexlsx.class.php";
            $xlsx = new SimpleXLSX( $_FILES['file']['tmp_name'] );
             list($cols, $rows) = $xlsx->dimension();
               foreach( $xlsx->rows() as $k => $r) 
                 { // loop through excel worksheet
                     $sub = mysql_escape_string($r[0]);
                     for ($x = 1; $x < $_POST["TotalCol"]; $x++) {
                        $sub .= "','".mysql_escape_string($r[$x]);
                        } 
                     //$sub = mysql_escape_string($r[0])."','" . mysql_escape_string($r[1]);
                     //$q = "insert into test2 value('" . mysql_escape_string($r[0])."','" . mysql_escape_string($r[1])."','" . mysql_escape_string($r[2]) . "');";
                     $q = "insert into ".$_POST["TableName"]." value('" . $sub . "');"
    
                        if ($conn->query($q) === TRUE) {
                            echo "New record created successfully";
                        } else {
                            echo "<br>// Error: " . $sql . "<br>" . $conn->error . "<br>";
                        }
                } // IF ENDS HERE
            }
    }
    ?>
    
    <h1>Upload</h1>
    <form method="post" enctype="multipart/form-data">
    *.XLSX <input type="file" name="file"  /></br><input type="Text" name="TableName" class="TableName" placeholder="TableName" /></br><input type="Text" name="TotalCol" class="TotalCol" placeholder="Total Columns" />&nbsp;&nbsp;<input type="submit" value="Insert" />
    </form>
    

    我想,之所以会出现这个问题,是因为我们没有在oracle服务器上安装MS Office/Excel,而Excel文件就是从该服务器生成的

    xlsx文件的单元格数据可以存储在“内联字符串”中 或者“共享字符串”(我从记忆中变出这些术语)。一些 库假定/支持其中一个而不支持另一个,Excel可能是 在打开、保存和关闭文件时“修复”文件——这真的很糟糕 事实上,关于这样做。我不熟悉这个php库,但是 我强烈怀疑这与此有关Michael-sqlbot 12 几小时前

    因此,我正在配置一个bot脚本(使用AutoIT)以在执行此脚本之前打开并保存所有excel文件


    如果有人知道更好的解决方法,那么请务必提及。谢谢。

    您检查了Excel文件的扩展名之前和之后了吗?刚刚验证,扩展名也没有变化。$q=“插入到“$\u POST[“TableName”]”值(“$sub”);“;”丢失的我认为这是个打字错误。您的脚本是否回显了数据?我认为,这是因为我们没有在Oracle服务器上安装MS Excel。但是,我不确定。还有一个想法是尝试使用PHPEXCEL对我有好处。你好,我也面临同样的问题,你能帮我吗?我正在使用mysql