6

JOOMLA2.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()して、複数のクエリの文字列を個々のクエリの配列に分割し、一度に1回実行する必要があります。

これは、内部拡張機能インストーラーの仕組みです。

コメントについて心配する必要はありません。コメントは削除されます。

$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 に答える