問題描述
我正在使用 mysqli,現在嘗試從 SQL 代碼片段(由 MySQL Workbench 生成)獲取視圖到數據庫中.
I'm using mysqli and trying now to get a view from an SQL code snippet (generated by MySQL Workbench) into a database.
$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 ;
).
This doen't work. No errors, the statement seems just to be ignored. It only works, if I remove the delimiter definitions (lines DELIMITER $$
, $$
, and DELIMITER ;
).
為什么它不起作用?在傳遞給 mysqli
函數和方法的 SQL 語句中使用分隔符可以/應該做什么?
Why is it not working? What can/should I do to use delimiters in SQL statements passed to mysqli
functions and methods?
謝謝
推薦答案
這是幫助我理解這一點的來源...http://zend-framework-community.634137.n4.nabble.com/Problems-changed-the-sql-end-of-statement-delimiter-tp2124060p2124276.html
This is the source that helped me understand this... http://zend-framework-community.634137.n4.nabble.com/Problems-changing-the-sql-end-of-statement-delimiter-tp2124060p2124276.html
DELIMITER 不是真正的 MySQL 語句.
DELIMITER is not an actual MySQL Statement.
我相信這只是一些 MySQL 客戶端實現的東西,以幫助同時傳送一堆 sql 語句.
I believe it is just something that some MySQL clients have implemented to help shipping a bunch of sql statements at the same time.
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 函數(在創建過程時使用分隔符)并從我的 SQL 中刪除 DELIMITER 工作.
I ran into the same problem, with the same mysqli driver, with multi_query function (using delimiters while creating procedures) and removing the DELIMITER from my SQL worked.
這篇關于如何讓 mysqli 在 SQL 語句中使用分隔符?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!