Использование PHPEXCEL с SQLSRV

Я ищу способ получения предварительно определенного шаблона заказа (XLSX), который мой клиент заполняет и загружает, который затем использует PHP Excel для вставки данных в мою базу данных sql.

У меня это нормально работает с использованием MySQL, но действительно нужно, чтобы он работал с сервером SQL, так как наша база данных (которая предшествует мне) является сервером SQL.

Код, который я использую для MySQL:

    if(isset($_POST['submit'])) {
                    if(isset($_FILES['uploadFile']['name']) && $_FILES['uploadFile']['name'] != "") {
                        $allowedExtensions = array("xls","xlsx");
                        $ext = pathinfo($_FILES['uploadFile']['name'], PATHINFO_EXTENSION);
                        if(in_array($ext, $allowedExtensions)) {
                            $file_size = $_FILES['uploadFile']['size'] / 1024;
                            if($file_size < 50) {
                                $file = "uploads/".$_FILES['uploadFile']['name'];
                                $isUploaded = copy($_FILES['uploadFile']['tmp_name'], $file);
                                if($isUploaded) {
                                    include("db.php");
                                    include("Classes/PHPExcel/IOFactory.php");
                                    try {
                                        //Load the excel(.xls/.xlsx) file
                                        $objPHPExcel = PHPExcel_IOFactory::load($file);
                                    } catch (Exception $e) {
                                        die('Error loading file "' . pathinfo($file, PATHINFO_BASENAME). '": ' . $e->getMessage());
                                    }

                                    //An excel file may contains many sheets, so you have to specify which one you need to read or work with.
                                    $sheet = $objPHPExcel->getSheet(0);
                                    //It returns the highest number of rows
                                    $total_rows = $_POST["xNum"]+1;
                                    //It returns the highest number of columns
                                    $highest_column = $sheet->getHighestColumn();
                                    echo '<div class="container-fluid">';
                                    echo '<h4 style="margin-top: 40px;">Data from Excel file</h4>';
                                    echo '<table cellpadding="5" cellspacing="1" border="1" class="table table-striped table-bordered table-sm table-hover">';
                                    $query = "insert into `tblorderitems` (`Vehicle`, `DriveTrain`, `Product`, `otherProduct`, `Price`, `RegNo`, `StockNo`, `ChassisNo`, `CommNo`, `PartNo`, `InStockDate`, `PlannedDate`) VALUES ";
                                    //Loop through each row of the worksheet
                                    for($row =2; $row <= $total_rows; $row++) {
                                        //Read a single row of data and store it as a array.
                                        //This line of code selects range of the cells like A1:D1
                                        $single_row = $sheet->rangeToArray('A' . $row . ':' . $highest_column . $row, NULL, TRUE, FALSE);
                                        echo "<tr>";
                                        //Creating a dynamic query based on the rows from the excel file
                                        $query .= "(";
                                        //Print each cell of the current row
                                        foreach($single_row[0] as $key=>$value) {
                                            echo "<td>".$value."</td>";
                                            $query .= "'".mysqli_real_escape_string($con, $value)."',";
                                        }
                                        $query = substr($query, 0, -1);
                                        $query .= "),";
                                        echo "</tr>";
                                    }
                                    $query = substr($query, 0, -1);
                                    echo '</table>';

                                    // At last we will execute the dynamically created query an save it into the database
                                    mysqli_query($con, $query);
                                    if(mysqli_affected_rows($con) > 0) {
                                        echo '<script> alert("Order Added");</script>';
                                    } else {
                                        echo '<script> aleft("Can\'t update database table! try again"); </script>';
                                    }
                                    // Finally we will remove the file from the uploads folder (optional) 
                                    unlink($file);
                                } else {
                                    echo '<script> alert("File not uploaded"); </script>';
                                }
                            } else {
                                echo '<script> alert("Maximum file size should be 50kb"); </script>';   
                            }
                        } else {
                            echo '<script> alert("Incorrect File Type"); </script>';
                        }
                    } else {
                        echo '<script> alert("Select an XLSX File First"); </script>';
                    }
                }
                echo '</div>';
                ?>

Кто-нибудь есть идеи, что я хотел бы изменить, чтобы заставить это работать с sqlsrv?

Спасибо Дэвид

0 ответов

Вам просто нужно заменить вызовы на чистые функции mysqli.

замещать mysqli_query с sqlsrv_query

замещать mysqli_affected_rows с sqlsrv_rows_affected

замещать mysqli_real_escape_string с вашей собственной функцией mssql_escape:

function mssql_escape($data) {
    if(is_numeric($data))
        return $data;
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}
Другие вопросы по тегам