我有两个问题。
中调用未定义的方法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');
?>
在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') . "'");
}
希望这能帮上忙。