Intereting Posts
Каков наилучший способ преобразования существующего PHP-класса в Java? PHP – отправить файл пользователю пустая веб-страница с d3.json (bardata.php), но работает с d3.json (bardata.json) Содержимое файла file_get_content () для обработки PHP как получить ширину экрана через php? Модификатор Smarty Отключить определенные даты в Datepicker PHP / MySQL. Существует ли функция mysql для определения того, существует ли хотя бы 2 определенных слова по меньшей мере в одном поле строки mysql Могу ли я использовать подготовленный документ PDO для привязки идентификатора (имя таблицы или поля) или ключевое слово синтаксиса? Как обработать XML с PHP, который был отправлен на сервер как text / xml? Каков наилучший способ выбрать первые две записи каждой группы командой «SELECT»? Как я могу вставлять отображение Google Map (или другое сопоставление ГИС) в PDF, когда я его создаю? Не удалось найти порядковый номер 372 в файле openscript.exe из WAMP / Apache. Как добавить изображение водяного знака в laravel 5.2 в пакет вмешательства? Загрузка файлов Zip, но недействительна?

Как заставить mysqli работать с DELIMITER в операторах SQL?

Я использую mysqli и теперь пытаюсь получить представление из фрагмента кода SQL (сгенерированного MySQL Workbench) в базу данных.

$query = <<<QUERY DROP VIEW IF EXISTS `myview` ; SHOW WARNINGS; DROP TABLE IF EXISTS `myview`; SHOW WARNINGS; DELIMITER $$ CREATE OR REPLACE VIEW `myview` AS ...view definition... $$ DELIMITER ; ; SHOW WARNINGS; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; QUERY; $result = mysqli_multi_query($dbConnection, $query); 

Это не работает. Нет ошибок, утверждение просто игнорируется. Он работает только, если я удалю определения разделителя (строки DELIMITER $$ , $$ и DELIMITER ; ).

Почему это не работает? Что я могу сделать, чтобы использовать разделители в операторах SQL, переданных в функции и методы mysqli ?

Спасибо

Solutions Collecting From Web of "Как заставить mysqli работать с DELIMITER в операторах SQL?"

Это источник, который помог мне понять это … http://zend-framework-community.634137.n4.nabble.com/Problems-changing-the-sql-end-of-statement-delimiter-tp2124060p2124276.html

DELIMITER не является фактическим заявлением MySQL.

Я считаю, что это то, что некоторые клиенты MySQL реализовали для одновременной доставки нескольких операторов sql.

Драйвер mysqli не реализует эту функциональность.

Итак, это должно сработать.

 $query = <<<QUERY DROP VIEW IF EXISTS `myview` ; SHOW WARNINGS; DROP TABLE IF EXISTS `myview`; SHOW WARNINGS; CREATE OR REPLACE VIEW `myview` AS ...view definition... ; SHOW WARNINGS; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; QUERY; $result = mysqli_multi_query($dbConnection, $query); 

Я столкнулся с той же проблемой, с тем же драйвером mysqli, с функцией multi_query (с использованием разделителей при создании процедур) и удалением DELIMITER с моего SQL.