有什么原因导致这种方法不起作用吗?当我将查询打印到屏幕上并通过phpMyAdmin运行它时,它可以工作。我省略了连接到数据库的部分(MySQL)。
$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);发布于 2011-08-17 23:38:13
看起来您正在尝试运行多个语句,可能是通过只支持单个语句的mysql_query()或mysqli->query()。相反,您需要使用mysqli->multi_query()或mysql_multi_query()来执行此操作。
发布于 2011-08-17 23:38:24
您正尝试一次运行多个查询,应一次运行一个查询或使用mysqli::multi_query方法。
发布于 2011-08-17 23:38:39
您试图通过创建一个包含多个查询的字符串来运行多个查询,然后将其发送到DB。看起来您的数据库对象不支持这一点,您可以运行多个查询的惟一方法是使用mysqli的multi_query函数。
然而,有一个缺点-如果事务不提交怎么办?如果出现错误怎么办?回滚和错误消息在哪里?
PDO在这里是我的选择,使用try/catch块,我会创建一个准备好的语句来发送,而不是一个包含所有查询的巨大字符串。它不仅更优雅,而且更容易调试。
https://stackoverflow.com/questions/7095480
复制相似问题