У меня проблема, отправив multi_query в мою базу данных MySQL. Я хочу, чтобы получить содержимое файла и отправить его в базу данных с помощью нескольких запросовMySQLi multi_query не работает
Я сделал MySQLi класс с этим методом в нем:
public function multi_query($resource)
{
$Timer = microtime(true);
if($this->MySQLiObj->multi_query($resource))
{
do {
if ($result = $this->MySQLiObj->store_result())
$result->free();
$this->queryCount++;
if(!$this->MySQLiObj->more_results()){break;}
} while ($this->MySQLiObj->next_result());
}
$this->SQL[] = $resource;
if ($this->MySQLiObj->errno)
{
if($this->MySQLiObj->error == true) {
echo "SQL Error: ".$this->MySQLiObj->error."<br><br>Query Code: ".$resource;
} else {
return "SQL Error: ".$this->MySQLiObj->error;
}
}
}
Вот я его с помощью:
$mysqli = new \System\Database\MySQLi($_SESSION["server"], $_SESSION["username"], $_SESSION["password"], $_SESSION["database"], $_SESSION["port"]);
echo $mysqli->multi_query(file_get_contents('install.sql'));
А вот мой .sql файл:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
CREATE TABLE `t_User`
(
`p_ID` INT(11) UNSIGNED AUTO_INCREMENT,
`m_Firstname` VARCHAR(75) NOT NULL,
`m_Surename` VARCHAR(150) NOT NULL,
`m_Email` VARCHAR(255) NOT NULL UNIQUE,
`m_Password` VARCHAR(65) NOT NULL,
`m_ActivationCode` VARCHAR(36) NOT NULL UNIQUE,
`m_Activated` BIT DEFAULT 0,
`m_Online` BIT DEFAULT 0,
`m_LastActivity` DATETIME,
`m_Birthdate` DATE,
`m_ProfilPicture` VARCHAR(255),
`m_SchoolID` INT(11),
`m_AddressID` INT(11),
`m_IsAdmin` BIT DEFAULT 0,
PRIMARY KEY (`p_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `t_School`
(
`p_ID` INT PRIMARY KEY AUTO_INCREMENT,
`m_Name` VARCHAR(150) UNIQUE NOT NULL,
`m_Description` VARCHAR(255),
`m_Homepage` VARCHAR(150) UNIQUE,
`m_AddressID` INT,
`m_ManagerID` INT NOT NULL UNIQUE
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
А вот моя ошибка:
Ошибка SQL: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «SET SQL_MODE =« NO_AUTO_VALUE_ON_ZERO »;/*! 40101 SET @OLD_CHARACTER_SET_CL 'по строке 1
Не имеет значения, удалю ли я первую первую строку. И я также попытался скопировать содержимое файла в php-переменную ... но он тоже не работает.
Надежда кто-нибудь может мне помочь:/
дикое предположение. у вас нет подписи BOM в верхней части вашего файла? –
Что такое подпись спецификации? –
позвольте мне сообщить, что для вас: http://google.com/search?q=BOM+signature –