Intereting Posts
Выполнение скрипта PHP с использованием объектно-c Lumen FatalErrorException в строке RedirectResponse.php 75: вызов функции-члена flashInput () на null Изменение относительного URL-адреса на абсолютный URL-адрес PHP 5.5 password_ * функции повторного хеширования Как сделать успешную регистрацию, скопировать содержимое одного столбца таблицы в другое? Вызов функции PHP Регулярное выражение PHP для коллекции слов вокруг поисковой фразы Могут ли экземпляры одного и того же скрипта PHP-скрипта общаться? Какие существуют методы инициализации объектно-ориентированной инфраструктуры PHP? Случайные ссылки PHP без повторения Создание новой папки tmp для использования PHP? В PHP при отправке строк в базу данных следует позаботиться о незаконных символах с помощью htmlspecialchars () или использовать регулярное выражение? Facebook как пользовательский URL профиля PHP Расшифровка URL не работает должным образом Как я могу отобразить отформатированную дату из метки времени Unix в twig?

Есть ли разумный способ запуска нескольких запросов в mysql, разделенных точкой с запятой;

Есть ли разумный способ запуска нескольких запросов MySQL, разделенных точкой с запятой (;) в строке через PHP, возможно, с помощью PHP-функции – и как можно кодировать такую ​​функцию PHP? Запросы ДОЛЖНЫ быть разделены двоеточием в строке, и не должно быть ручного редактирования того, что принято в других вопросах, поскольку решение должно обрабатывать этот формат (это точка).

$multi_query = "INSERT INTO `stuff_5_firm` (firm_id, firmname) VALUES (0, 'Hey LTD'); INSERT INTO `stuff_6_invoice` (invoice_id, firm_id, amount) VALUES (0, 0, 500); INSERT INTO `stuff_7_order` (order_id, firm_id, when) VALUES (0, 0, '2018-05-05'); "; 

Вот рабочее решение

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

Вероятно, разумнее использовать mysqli_multi_query, который объясняется здесь http://php.net/manual/en/mysqli.multi-query.php (благодаря @andrewsi).