php
  • mysql
  • sql
  • joomla
  • joomla2.5
  • 2012-10-03 9 views 5 likes 
    5

    Voglio eseguire molte query di aggiornamento SQL contemporaneamente utilizzando JOOMLA 2.5. Sotto il mio codice:È possibile eseguire più query di aggiornamento in una sola utilizzando Joomla?

    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(); 
    

    Ma mi mostra un errore di sintassi. Ho provato a testare direttamente in MySQL e funziona.

    risposta

    4

    PHP non consente più query per impostazione predefinita. Puoi forzarlo a farlo aggiungendo un parametro a mysql_connect, ma non lo consiglierei (apre enormi buchi di sicurezza per le iniezioni SQL).

    Non so come JFactory gestisca questo, ma sarei sorpreso se fosse diverso.

    Ulteriori informazioni su esso: http://de3.php.net/manual/en/function.mysql-query.php#91669

    +0

    Ok, quindi penso che sarà meglio usare un ciclo. Cerco anche di misurare il tempo che ci vorrà (** 0.095135 secondi **) e sembra ok. Grazie per l'aiuto. – toto

    +0

    Se si imposta lo stesso valore su ogni voce, è possibile farlo in una singola query: 'UPDATE #__mytable SET myfield = 'value' dove id IN (1,2,3)' –

    +0

    Sì, ma non ho il stessi valori. – toto

    0

    È necessario utilizzare JDatabaseDriver::splitSql() per dividere una stringa di più query in un array di singole query, ed eseguire una volta alla volta.

    Ecco come funziona il programma di installazione delle estensioni interne.

    Non preoccuparti per i commenti, verranno rimossi.

    $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) 
        { 
         ... 
        } 
    } 
    
    Problemi correlati