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