Здравствуйте! Есть проблема с ООП в PHP

111
26 ноября 2020, 09:10

Начал недавно изучать ООП и решил переписать с нуля свой скрипт написанный с помощью процедурного стиля в ООП стиль. Но мой код почему-то работает только наполовину. Смысл скрипта таков - я беру у пользователя .sql файл, удаляю старую таблицу из бд, записываю новую таблицу с помощью mysqli_multi_query(); (sql-файл) Так вот, после того как я нажимаю кнопку отправки файла - форма пропадает, изменений в бд никаких не вносится, а файл оказывается загруженным в указанную мной в скрипте директорию. Как я понял единственное что работает в моём самописном классе - это получение директории конструктором и дальнейшая загрузка файла в неё. Еще я сделал 2 публичных переменных для вывода этапов выполнения скрипта, но они не отображаются при отправке формы => работа скрипта заканчивается на строчке (возможно)

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $this->uploadfile)) {

Не знаю что делать, буду благодарен если поможете. Далее скидываю сами скрипты (Ошибок никаких не выводится)

  1. HTML, CSS форма.

<?php  
session_start();  
include_once("dbconnect.php"); 
include_once("sqlclass.php"); 
echo $form->result1; 
echo $form->result2; 
?> 
 
<html> 
<head> 
<title>adminpanel</title> 
  </head> 
<body> 
  <div style="margin:0 auto; width:800px; height:630px; border:2px solid gray; padding: 10px 10px; background-color:indigo;"> 
  <div style="margin:0 auto; width:800px; height:630px; border:2px solid gray; padding: 10px 10px; background-color:white; overflow-y:scroll;"> 
  	<form enctype="multipart/form-data" method="POST" action="<?php $form->uploadsql(); ?>"> 
    <!-- Поле MAX_FILE_SIZE должно быть указано до поля загрузки файла --> 
    <input type="hidden" name="MAX_FILE_SIZE" value="30000000" /> 
    <!-- Название элемента input определяет имя в массиве $_FILES --> 
    Отправить этот файл .sql: <input name="userfile" type="file" /> 
    <input type="submit" value="Отправить файл" name="sendsql"/> 
</form><br> 
</div> 
</div> 
</body>

  1. Скрипт подключения к базе данных (dbconnect.php)

<?php 
$mysqli = new mysqli("localhost", "root", "", "spec_db"); 
if ($mysqli->connect_error) { 
    die('Ошибка подключения (' . $mysqli->connect_errno . ') '. $mysqli->connect_error); 
}else{ 
	echo "Успешное подключение к базе данных"; 
}

  1. Скрипт-обработчик (Проблемный) (sqlclass.php)

<?php 
// working with sql files 
class wwsqlf{ 
 
public $result1; 
public $result2; 
protected $upploaddir; 
protected $uploadfile; 
 function __construct() { 
         $dir = $this->upploaddir = $_SERVER['DOCUMENT_ROOT'] . "/sqlfiles/"; 
         $this->uploadfile =  $dir . basename($_FILES['userfile']['name']); 
    } 
function uploadsql(){ 
//Если файл был загружен на сервер => удаляем текущую таблицу и ставим новую 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $this->uploadfile)) { 
	//удаление таблицы 
	$result = $mysqli->query("DROP TABLE results"); 
if ($result) { 
    $this->result1="Удаление текущей таблицы... Успешно!"; 
 
    /* очищаем результирующий набор */ 
    $result->close(); 
}else{ 
	$this->result1="Удаление текущей таблицы... Ошибка!"; 
	$result->close(); 
	exit(); 
} 
// ставим новую таблицу 
$getsql = file_get_contents($this->uploadfile); 
$spec1 = $mysqli->mysqli_multi_query($getsql); 
if (!$spec1){ 
   $this->result2="Начинаю создавать таблицу полученную из .sql файла... Ошибка!"; 
   $result->close(); 
   exit(); 
}else{ 
  unlink($this->uploadfile); 
  $this->result2="Начинаю создавать таблицу полученную из .sql файла... Успешно!"; 
  $result->close(); 
} 
    } else { 
    $this->result1="Ошибка загрузки файла!"; 
} 
} 
} 
$form = new wwsqlf;

READ ALSO
Работа с get методом. Передача параметров

Работа с get методом. Передача параметров

]Код работает до момента когда я делаю запрос delete from он его просто как будто не читаетНе понимаю в чем дело

126
Переопределить класс?

Переопределить класс?

У меня такая проблемаЕсть класс, при его наследовании я добавляю в дочерний класс переменную, но при обращении к этой переменной ошибка

165
Выводит только первую строку

Выводит только первую строку

Пытаюсь заполнить таблицу значениями из БДНо выводятся только первые значения

156