SQL 脚本在 MySQL 中有效,但 mysqli->query() 失败;为啥?

Posted

技术标签:

【中文标题】SQL 脚本在 MySQL 中有效,但 mysqli->query() 失败;为啥?【英文标题】:SQL script works in MySQL, but fails with mysqli->query(); why?SQL 脚本在 MySQL 中有效,但 mysqli->query() 失败;为什么? 【发布时间】:2012-12-23 22:38:15 【问题描述】:

我的 SQL 脚本在 mysql Workbench 中成功运行。

以下给出错误:

$link = mysqli_connect(***********);
$result = $link->query($sql);

SQL 脚本执行一些操作,包括:

创建临时表 截断表 删除表 插入 选择

执行此操作时出现错误:

-- 1.1 Creating temporary table for categories

    drop table if exists exp_categories; -- just in case
    create temporary table exp_categories
    (
        ID bigint not null,
        Categories text not null,
        PRIMARY KEY (ID)
    ) DEFAULT CHARSET=utf8;

-- 1.2 Inserting data...
-- few other statements here
-- last statement is SELECT

mysqli 有我遇到的限制吗?

【问题讨论】:

您的信息有点不清楚。错误是什么,发生在哪里? 您连接的用户是否在数据库中有必要的权限来删除和创建表? 【参考方案1】:

尝试使用multi_query()

必须执行多个语句或多个查询 mysqli_multi_query()。声明的个别声明 字符串用分号隔开。

$link->multi_query($sql)

您连接的用户必须在您的数据库中拥有必要的权限或全局权限。

【讨论】:

谢谢。但最后我不得不分解我的 sql 文件以分隔查询以避免多个查询的额外过程。

以上是关于SQL 脚本在 MySQL 中有效,但 mysqli->query() 失败;为啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 中有效但在 PHP 中无效的查询

MySQL学习笔记05MySQL集群的分布式权限

在shell脚本中执行mysql,调用sql文件,将sql文件执行结果存入新的日志文件中,但日志文件没有sql结果

DBeaver执行sql脚本报错:CreateProcess error=193, %1 不是有效的 Win32 应用程序。

DBeaver执行sql脚本报错:CreateProcess error=193, %1 不是有效的 Win32 应用程序。

mysql执行的sql脚本中,注释怎么写?