Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy istnieje sprytny sposób na uruchamianie wielu zapytań w mysql oddzielonych średnikiem;

Oto działające rozwiązanie

<?php
function function_that_does_multiple_queries($mq, $dblink) {
    // if a new line follows the ; then $q_array = explode(';\n',$mq); is suggested since queries can contain ; below
    $q_array = explode(";",$mq);
    /* 
    //To check structure of array
    echo "<pre>";
    print_r($q_array);
    echo "</pre>";
    exit();
    */
    foreach($q_array as $q){
        $q = trim($q);
        $r[] = mysqli_query($dblink,$q);
    }
    return $r;
}
$multi_query = "CREATE TABLE IF NOT EXISTS `stuff_5_firm` (
  `firmid` int(11) NOT NULL,
  `firm_name` varchar(256) NOT NULL,
  `firm_invoice_adr` text NOT NULL,
  `firm_invoice_email` varchar(256) NOT NULL,
  `firm_admin_con_to_userid` int(16) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `stuff_6_invoice` (
  `invoiceid` int(11) NOT NULL,
  `inv_date` datetime NOT NULL,
  `inv_due` datetime NOT NULL,
  `inv_paid` datetime NOT NULL,
  `inv_amount` int(11) NOT NULL,
  `inv_text` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;";

function_that_does_multiple_queries($multi_query, $dblink);

?>
"; Wyjście(); */ foreach($q_array as $q){ $q =trim($q); $r[] =mysqli_query($dblink,$q); } return $r;}$multi_query ="UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE `stuff_5_firm` ( `firmid` int(11) NOT NULL, `firm_name` varchar(256) NOT NULL, `firm_invoice_adr` text NOT NULL, `firm_invoice_email` varchar (256) NOT NULL, `firm_admin_con_to_userid` int(16) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE `stuff_6_invoice` ( `invoiceid` int(11) NOT NULL, `inv_date` datetime NIE NULL, `inv_due` datetime NOT NULL, `inv_paid` datetime NOT NULL, `inv_amount` int(11) NOT NULL, `inv_text` int(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;";function_that_does_multiple_queries($multi_query, $ dblink);?>

Prawdopodobnie rozsądniej jest użyć mysqli_multi_query, która jest wyjaśniona tutaj http://php.net /manual/pl/mysqli.multi-query.php (dzięki @andrewsi).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykrywanie relacji między rekordami bazy danych MySQL

  2. Wyszukiwanie PHP MySQL z wieloma kryteriami

  3. mysql:aktualizacja z podzapytaniem,

  4. Jak zmienić wartość automatycznego przyrostu bazy danych MySQL / MariaDB?

  5. PHP Serialize Function - Dodawanie serializowanych danych do mysql, a następnie pobieranie i wyświetlanie