Начал недавно изучать ООП и решил переписать с нуля свой скрипт написанный с помощью процедурного стиля в ООП стиль. Но мой код почему-то работает только наполовину. Смысл скрипта таков - я беру у пользователя .sql файл, удаляю старую таблицу из бд, записываю новую таблицу с помощью mysqli_multi_query(); (sql-файл) Так вот, после того как я нажимаю кнопку отправки файла - форма пропадает, изменений в бд никаких не вносится, а файл оказывается загруженным в указанную мной в скрипте директорию. Как я понял единственное что работает в моём самописном классе - это получение директории конструктором и дальнейшая загрузка файла в неё. Еще я сделал 2 публичных переменных для вывода этапов выполнения скрипта, но они не отображаются при отправке формы => работа скрипта заканчивается на строчке (возможно)
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $this->uploadfile)) {
Не знаю что делать, буду благодарен если поможете. Далее скидываю сами скрипты (Ошибок никаких не выводится)
<?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>
<?php
$mysqli = new mysqli("localhost", "root", "", "spec_db");
if ($mysqli->connect_error) {
die('Ошибка подключения (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
}else{
echo "Успешное подключение к базе данных";
}
<?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;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
]Код работает до момента когда я делаю запрос delete from он его просто как будто не читаетНе понимаю в чем дело
У меня такая проблемаЕсть класс, при его наследовании я добавляю в дочерний класс переменную, но при обращении к этой переменной ошибка
Пытаюсь заполнить таблицу значениями из БДНо выводятся только первые значения