首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行此查询时返回false

问运行此查询时返回false
EN

Stack Overflow用户
提问于 2011-08-17 23:33:00
回答 4查看 151关注 0票数 0

有什么原因导致这种方法不起作用吗?当我将查询打印到屏幕上并通过phpMyAdmin运行它时,它可以工作。我省略了连接到数据库的部分(MySQL)。

代码语言:javascript
复制
$query = "START TRANSACTION; ";
$query .= "INSERT INTO table1(text) VALUES('$question_description'); ";

for ($i = 0; $i < count($processed_answers); $i++) {
    $query .= "INSERT INTO table2(question_id, text, serial_number, is_correct) ".
              "VALUES($question_id, '".$processed_answers[$i]."', '".$serial_numbers[$i]."', 0); ";
}

foreach($categories as $category) {
    $query .= "INSERT INTO table3 VALUES($question_id, $category); ";
}

$query .= "COMMIT; ";
$result = $db->query($query);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-17 23:38:13

看起来您正在尝试运行多个语句,可能是通过只支持单个语句的mysql_query()或mysqli->query()。相反,您需要使用mysqli->multi_query()或mysql_multi_query()来执行此操作。

票数 1
EN

Stack Overflow用户

发布于 2011-08-17 23:38:24

您正尝试一次运行多个查询,应一次运行一个查询或使用mysqli::multi_query方法。

票数 0
EN

Stack Overflow用户

发布于 2011-08-17 23:38:39

您试图通过创建一个包含多个查询的字符串来运行多个查询,然后将其发送到DB。看起来您的数据库对象不支持这一点,您可以运行多个查询的惟一方法是使用mysqli的multi_query函数。

然而,有一个缺点-如果事务不提交怎么办?如果出现错误怎么办?回滚和错误消息在哪里?

PDO在这里是我的选择,使用try/catch块,我会创建一个准备好的语句来发送,而不是一个包含所有查询的巨大字符串。它不仅更优雅,而且更容易调试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7095480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档