提问者:小点点

php Excel上传“调用未定义的方法mysqli::escape()”发生


我有两个问题。

  1. 上载Excel文件时出错。 错误代码:

中调用未定义的方法mysqli::escape()

不只是一个文件,但我想导入每个文件夹的Excel数据并上传。

我该怎么办? 我试过这个那个,但都不成功。

这是我的密码

<?php


function show_files($start) {
    $contents = scandir($start);
    array_splice($contents, 0,2);

    foreach ( $contents as $item ) {

        $link = mysqli_connect("localhost", "root", "1234", "test");

        // Check connection
        if($link === false){
            die("ERROR: Could not connect. " . mysqli_connect_error());
        }


        // echo $item;
        $sql = "SELECT * FROM users  where  storename =  '$item'";
        if($result = mysqli_query($link, $sql)){
            if(mysqli_num_rows($result) > 0){
                while($row = mysqli_fetch_array($result)){
                    // echo $row['store_mbrno'];

                    /** Error reporting */
                    error_reporting(E_ALL);
                    ini_set('display_errors', TRUE);
                    ini_set('display_startup_errors', TRUE);
                    // date_default_timezone_set('Europe/London');


                    /** Include PHPExcel and MySQLi db */

                    require_once './Classes/PHPExcel.php';



                    // Create new PHPExcel object
                    $objPHPExcel = PHPExcel_IOFactory::load("09-01.xlsx");

                    $dataArr = array();

                    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
                        $worksheetTitle     = $worksheet->getTitle();
                        $highestRow         = $worksheet->getHighestRow(); // e.g. 10
                        $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
                        $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);

                        for ($row = 1; $row <= $highestRow; ++ $row) {
                            for ($col = 0; $col < $highestColumnIndex; ++ $col) {
                                $cell = $worksheet->getCellByColumnAndRow($col, $row);
                                $val = $cell->getValue();
                                $dataArr[$row][$col] = $val;
                            }
                        }
                    }

                    unset($dataArr[1]); // since in our example the first row is the header and not the actual data

                    // echo "test";
                    foreach($dataArr as $val){

                        $query = $link->query("INSERT INTO test 
                            SET chart_num = '" . $link->escape($val['0']) . "', 
                                chart_name = '" . $link->escape($val['1']) . "',
                                visit = '" . $link->escape($val['2']) . "', 
                                total_medical_bills = '" . $link->escape($val['3']) . "', 
                                total_amount = '" . $link->escape($val['4']) . "', 
                                amount_asked = '" . $link->escape($val['5']) . "', 
                                medical_bills_payment = '" . $link->escape($val['6']) . "', 
                                personal_liability_amount = '" . $link->escape($val['7']) . "', 
                                non_payment = '" . $link->escape($val['8']) . "', 
                                insurance_division = '" . $link->escape($val['9']) . "', 
                                division = '" . $link->escape($val['10']) . "', 
                                cash_amount_received = '" . $link->escape($val['11']) . "', 
                                card_amount_received = '" . $link->escape($val['12']) . "', 
                                store_mbrno = '" . $link->escape('100017') . "'");

                    }

                }
                 mysqli_free_result($result);
            } else{
                echo "No records matching your query were found.";
            }
        } else{
             echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
        }

        // Close connection
        mysqli_close($link);
        // echo $sql;
        echo "<br>";
    }
}
show_files('D:\DATA');
?>

共1个答案

匿名用户

在mysqli类中没有方法,即escape,因为您已经将$link分配给了mysqli类。

$link = mysqli_connect("localhost", "root", "1234", "test");

您应该改用mysql_real_escape_string方法。

// echo "test";
foreach($dataArr as $val){

$query = $link->query("INSERT INTO test 
SET chart_num = '" .  mysql_real_escape_string($val['0']) . "', 
    chart_name = '" .  mysql_real_escape_string($val['1']) . "',
    visit = '" .  mysql_real_escape_string($val['2']) . "', 
    total_medical_bills = '" .  mysql_real_escape_string($val['3']) . "', 
    total_amount = '" .  mysql_real_escape_string($val['4']) . "', 
    amount_asked = '" .  mysql_real_escape_string($val['5']) . "', 
    medical_bills_payment = '" .  mysql_real_escape_string($val['6']) . "', 
    personal_liability_amount = '" .  mysql_real_escape_string($val['7']) . "', 
    non_payment = '" .  mysql_real_escape_string($val['8']) . "', 
    insurance_division = '" .  mysql_real_escape_string($val['9']) . "', 
    division = '" .  mysql_real_escape_string($val['10']) . "', 
    cash_amount_received = '" .  mysql_real_escape_string($val['11']) . "', 
    card_amount_received = '" .  mysql_real_escape_string($val['12']) . "', 
    store_mbrno = '" .  mysql_real_escape_string('100017') . "'");

}

希望这能帮上忙。