Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como fazer o mysqli funcionar com DELIMITERs em instruções SQL?


Esta é a fonte que me ajudou a entender isso...http://zend-framework-community.634137.n4.nabble.com/Problems-change-the-sql-end-of-statement-delimiter-tp2124060p2124276.html

Acredito que seja apenas algo que alguns clientes MySQL implementaram para ajudar a enviar várias instruções sql ao mesmo tempo.

driver mysqli não implementa esta funcionalidade.

Então, isso deve funcionar.
$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 [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
QUERY;

$result = mysqli_multi_query($dbConnection, $query);

Eu me deparei com o mesmo problema, com o mesmo driver mysqli, com função multi_query (usando delimitadores ao criar procedimentos) e removendo o DELIMITER do meu SQL funcionou.