6

我想使用 JOOMLA 2.5 一次运行多个 SQL 更新查询。在我的代码下面:

require_once '../includes/framework.php';  
$query = "UPDATE #__mytable SET myfield='value' where id=1; UPDATE #__mytable SET  
myfield='value' where id=2; UPDATE #__mytable SET myfield='value' where id=3;";  
$db = JFactory::getDbo();  
$db->setQuery($query);  
$db->query();

但它向我显示了一个语法错误。我尝试直接在 MYSQL 中进行测试,它可以工作。

4

2 回答 2

5

默认情况下,PHP 不允许多个查询。您可以通过向 mysql_connect 添加参数来强制它这样做,但我不推荐它(它为 SQL 注入打开了巨大的安全漏洞)。

我不知道 JFactory 是如何处理这个问题的,但如果它有所不同,我会感到惊讶。

有关它的更多信息:http: //de3.php.net/manual/en/function.mysql-query.php#91669

于 2012-10-03T09:43:04.793 回答
1

您必须使用JDatabaseDriver::splitSql()将多个查询的字符串拆分为单个查询的数组,并一次运行一次。

这就是内部扩展安装程序的工作方式。

不要担心评论,他们会被剥夺。

$sql = "UPDATE #__mytable SET myfield='value' where id=1; UPDATE #__mytable SET myfield='value' where id=2; UPDATE #__mytable SET myfield='value' where id=3;";

$db = JFactory::getDbo();
$queries = JDatabaseDriver::splitSql($sql);
foreach ($queries as $query)
{
    try
    {
        $db->setQuery($query)->execute();
    }
    catch (JDatabaseExceptionExecuting $e)
    {
        ...
    }
}
于 2017-05-15T22:58:45.120 回答