1
我正在使用mysqli并试图从SQL代码片段(由MySQL Workbench生成)获取视图到数据库中。如何在SQL语句中使用DELIMITER获取mysqli?
$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 [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
QUERY;
$result = mysqli_multi_query($dbConnection, $query);
这没有用。没有错误,声明似乎只是被忽略。如果删除分隔符定义(行DELIMITER $$
,$$
和DELIMITER ;
),它才起作用。
为什么它不起作用?我可以/应该如何在SQL语句中使用分隔符传递给mysqli
函数和方法?
THX
你不能。使用['mysqli_query()'](http://www.php.net/manual/en/mysqli.query.php)将整个'CREATE VIEW'操作(包括其嵌入的';'分隔符)作为一个单独执行声明。 – eggyal 2013-03-14 20:33:20
谢谢您的回复!我在[MySQLi文档](http://www.php.net/manual/en/book.mysqli.php)中找不到任何关于它的信息。你能解释一下,为什么它是不可能的。或者只是提供一个链接你的信息源。 – automatix 2013-03-14 22:06:26
'DELIMITER'不是服务器端声明。它是由'mysql'命令行客户端识别的客户端命令(也可能是其他的)。它不被'mysqli'驱动程序识别,因此文档中没有任何内容。文档没有提到任何改变'mysqli'驱动程序语句分隔符的方法。我没有提及引用。 – eggyal 2013-03-14 22:13:43