Member 13891176 Ответов: 1

Ошибка 500 при попытке вставить данные excel в mysql с помощью PHP


Я пытаюсь загрузить файл (xlsx) в mysql, и я продолжаю получать ту же ошибку при попытке отправить. "127.0.0.1 в настоящее время не может обработать этот запрос". Какие-нибудь советы?

Что я уже пробовал:

<?php
	require('Classes/PHPExcel/IOFactory.php');
	
    $servername="localhost";
	$username="omri";
	$password="1234";
	$dbname="omri";
	
	if(isset($_POST['upload'])){
	
	$inputfilename= $_FILES['file']['tmp_name']	;
	$exceldata= array();
	
	$conn= mysqli_connect($servername, $username, $password, $dbname);
	
	if(!$conn){
	die("connection failed: ".mysqli_connect_error());	
	}	
	
	try{
		
	$inputfiletype= PHPExcel_IOFactory::identify($inputfilename);
	$objReader=	PHPExcel_IOFactory::createReader($inputfiletype);
	$objPHPExcel= $objReader ->load($inputfilename);	
		
	}	
		
	catch(Exception $e)
	{
		
	die('error loading file "'.pathinfo($inputfilename, PATHINFO_BASENAME).'": '.$e->getMessage());
		
	}	
	
	$sheet= $objPHPExcel->getSheet(0);	
	$highestrow= $sheet->getHighestRow();	
	$higestcolumn= $sheet->getHighestColumn();
		
	for($row=1; $row<=$highestrow; $row++)
	{
		
	$rowData= $sheet->rangeToArray('A'. $row .':'. $higestcolumn . $row, NULL, TRUE, FALSE );
	$sql= "INSERT INTO restricted (name, id, citizenship, expires) VALUES ('".$rowData[0][0]."','".$rowData[0][1]."','".$rowData[0][2]."','".$rowData[0][3]."')";
	
	if(mysql_query($conn,$sql)){
	$exceldata[]=$rowData[0];
	}
	
	else{
	echo "Error: " . $sql . "<br>" . mysql_error($conn);	
	}	
	}
		
	echo "<table border='1'>";
	foreach($exceldata as $index => $excelraw)
	{
		
	echo "<tr>";
	
	foreach($excelraw as $excelcolumn)
	{
		
	echo "<td>". $excelcolumn . "</td>";
		
	}	
		
	echo "</tr>";
		
	}	
		
	echo "</table>";	
	
	mysql_close($conn);	
	}
	?>
	
<html>
<head>
<meta charset="UTF-8">	
<title>Import Excel</title>
</head>

<body>
	
<form action="" method="post" enctype="multipart/form-data">
	
<input type="file" name="file">
<input type="submit" name="upload" value="upload">	
	
</form>	
	
</body>
</html>

Jochen Arndt

Проверьте файл журнала ошибок вашего веб-сервера. Он должен содержать больше информации.

1 Ответов

Рейтинг:
0

Patrice T

$sql= "INSERT INTO restricted (name, id, citizenship, expires) VALUES ('".$rowData[0][0]."','".$rowData[0][1]."','".$rowData[0][2]."','".$rowData[0][3]."')";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]
-----
Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
<?php
require('Classes/PHPExcel/IOFactory.php');

$servername="localhost";
$username="omri";
$password="1234";
$dbname="omri";

if(isset($_POST['upload'])){

	$inputfilename= $_FILES['file']['tmp_name']	;
	$exceldata= array();

	$conn= mysqli_connect($servername, $username, $password, $dbname);

	if(!$conn){
		die("connection failed: ".mysqli_connect_error());
	}

	try{

		$inputfiletype= PHPExcel_IOFactory::identify($inputfilename);
		$objReader=	PHPExcel_IOFactory::createReader($inputfiletype);
		$objPHPExcel= $objReader ->load($inputfilename);

	}

	catch(Exception $e)
	{

		die('error loading file "'.pathinfo($inputfilename, PATHINFO_BASENAME).'": '.$e->getMessage());

	}

	$sheet= $objPHPExcel->getSheet(0);
	$highestrow= $sheet->getHighestRow();
	$higestcolumn= $sheet->getHighestColumn();

	for($row=1; $row<=$highestrow; $row++)
	{

		$rowData= $sheet->rangeToArray('A'. $row .':'. $higestcolumn . $row, NULL, TRUE, FALSE );
		$sql= "INSERT INTO restricted (name, id, citizenship, expires) VALUES ('".$rowData[0][0]."','".$rowData[0][1]."','".$rowData[0][2]."','".$rowData[0][3]."')";

		if(mysql_query($conn,$sql)){
			$exceldata[]=$rowData[0];
		}

		else{
			echo "Error: " . $sql . "<br>" . mysql_error($conn);
		}
	}

	echo "<table border='1'>";
	foreach($exceldata as $index => $excelraw)
	{

		echo "<tr>";

		foreach($excelraw as $excelcolumn)
		{

			echo "<td>". $excelcolumn . "</td>";

		}

		echo "</tr>";

	}

	echo "</table>";

	mysql_close($conn);
}
?>

<html>
	<head>
		<meta charset="UTF-8">
		<title>Import Excel</title>
	</head>

	<body>

		<form action="" method="post" enctype="multipart/form-data">
			<input type="file" name="file">
			<input type="submit" name="upload" value="upload">
		</form>

	</body>
</html>

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]