- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在向我的 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/
我已经遵循this tutorial来让Elasticsearch与Laravel 6一起工作。一切都很好,但是我需要对查询进行一些更改。我需要对此进行更改: private function sea
我放入另一个查询中的多重查询无法运行。内部查询中的存储过程未执行。多重查询单独运行良好,但在循环内却运行不佳。冷你请检查一下,为什么 InnerQuery 不在循环内执行? query("SELEC
谁能告诉我如何使用 mysqli->multi_query() 在单个连接上执行多个更新/插入查询?谢谢。 我确实遵循了 PHP 手册中的教程。但我有一些问题。 我的一批查询有 5 个用分号分隔的语句
我需要一些帮助来找出我在随附代码中的错误。当我使用 if ($conn->query($sql) === TRUE) { 方法运行两个查询中的任何一个时,每个查询都可以正常工作。但是当我尝试将它们与
这是一个例子。 $mysqli = new mysqli("localhost", "root", "123", "temp"); $mysqli->begin_transaction(); $sql
我正在使用 JSON 将数据发送到我的 PHP API。我想使用此 API 向我的 Android 用户发送推送通知。我正面临一个奇怪的问题。我从 JSON 发送 Mobile Number、Mobi
我正在尝试使用多查询在 for 循环中运行一系列插入语句。 for 循环正确执行,第一个插入工作正常,但其他插入语句都没有运行。没有打印任何错误消息,但是用于打印结果的代码也没有显示任何内容。这是我的
我正在设置几个 MySQLi multi_query 函数。我知道您不能将准备好的语句与 multi_query 一起使用,因此我想知道建议与 muti_query 一起使用哪些安全预防措施。 rea
我需要用大约 3000 个查询来查询 mysql 数据库,而不是将每个查询发送到数据库服务器,我创建了巨大的 INSERT INTO ON DUPLICATE KEY 语句查询并将其发送到数据库服务器
我必须插入 2 个查询,并且我想使用 multi_queries 运行它们。在文件的每次运行中,表中都应该添加 2 行,但我的问题是它们没有被插入。我与数据库的连接正常,我用它测试了查询 $q
我需要在 PHP 中运行数据库创建脚本。使用 multi_query 我发现触发器定界符有一些问题: $sql=" CREATE TABLE `test` ( `id` int(10) unsigne
我有一个字符串数组,它们是 sql“输入到...”查询。我循环遍历这个数组,将其中的每 50 个组合成一个新字符串,然后发送到 mysql 数据库。之后,我重置临时字符串并为新查询做好准备。 但是我的
我正在使用 Mysqli 和 multi_query 在数据库表中更新或插入多行。当我在我的本地 MAMP 服务器上使用它们时它们工作正常,但当我将它们放到网上时它们就崩溃了。在远程服务器上,只执行了
谁能解释一下 mysqli multi_query() 的用途是什么?我不明白一个简单的 MySQLi 查询是否支持多语句,或者我是否被迫使用 multi_query() 来执行这样的查询: S
我在向我的 MySQL 数据库发送 multi_query 时遇到了问题。我想获取一个文件的内容并通过多查询将其发送到数据库 我用这个方法创建了一个 MySQLi 类: public func
有人在回答中提出了 MySQLi multi_query 函数,声称它比循环执行 3 个单独的查询要好。我尝试用 Google 搜索一些答案,但没有真正满足我的好奇心,所以我希望你们能更好地了解使用它
这个问题在这里已经有了答案: "Commands out of sync; you can't run this command now" - Caused by mysqli::multi_que
function cpanel_populate_database($dbname) { // populate database $sql = file_get_contents
我有一个函数,旨在借助 sql 查询复制具有所有属性的产品。 我的问题是在完成后将 new_product_id 返回给 php。 如果我在 phpmyadmin 中运行 sql 脚本,一切正常。 如
docs for multi_query说: Returns FALSE if the first statement failed. To retrieve subsequent errors fr
我是一名优秀的程序员,十分优秀!