gpt4 book ai didi

php - MySQLi multi_query 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:48 24 4
gpt4 key购买 nike

我在向我的 MySQL 数据库发送 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 @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@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 变量中……但它也不起作用。

希望有人能帮助我:/

最佳答案

说到 mysqli_multi_query,它对我来说没问题:

$q = <<<HERE
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@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;
HERE;

$m = mysqli_connect('localhost','test','aaa','test');
$m->multi_query($q);
var_dump($m->error);
  • 没有出现错误,表已创建。所以,这个功能显然有效。

关于php - MySQLi multi_query 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com