Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中创建一个使用PHP中另一个数据库视图名称的视图?_Php_Mysql - Fatal编程技术网

如何在MySQL中创建一个使用PHP中另一个数据库视图名称的视图?

如何在MySQL中创建一个使用PHP中另一个数据库视图名称的视图?,php,mysql,Php,Mysql,我正在尝试使用php中的这行代码在MySQL数据库中创建一个与另一个数据库中的视图同名的视图 mysql_query('CREATE VIEW `' . $targetDB . '`.`' . $row[0] . '` LIKE `' . $sourceDB . '`.`' . $row[0] . '`') or die(mysql_error()); 然而,当我运行我的代码时,我得到了这个错误 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“LIKE copyind

我正在尝试使用php中的这行代码在MySQL数据库中创建一个与另一个数据库中的视图同名的视图

mysql_query('CREATE VIEW `' . $targetDB . '`.`' . $row[0] . '` LIKE `' . $sourceDB . '`.`' . $row[0] . '`') or die(mysql_error());
然而,当我运行我的代码时,我得到了这个错误

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“LIKE copyindb.normal\u limit\u view”附近使用的正确语法

我做错了什么?我的完整代码是,如果它有帮助:

    <?php
set_time_limit(0);
function duplicateTables($sourceDB=NULL, $targetDB=NULL) {
    $link = mysql_connect('my_host', 'my_user', 'my_pass') or die(mysql_error()); // connect to database
                                $results = mysql_query('SHOW FULL TABLES FROM copyinrdb WHERE TABLE_TYPE= "VIEW"') or die(mysql_error());
        while($row = mysql_fetch_row($results)) {
            mysql_query('CREATE VIEW `' . $targetDB . '`.`' . $row[0] . '` LIKE `' . $sourceDB . '`.`' . $row[0] . '`') or die(mysql_error());
            mysql_query('INSERT INTO `' . $targetDB . '`.`' . $row[0] . '` SELECT * FROM `' . $sourceDB . '`.`' . $row[0] . '`') or die(mysql_error());
        }
        mysql_free_result($results);

    mysql_close($link);
} // end duplicateTables()
duplicateTables('copyinrdb', 'copytest1');
?>
创建像db2.viewname这样的视图db1.viewname根本不是有效的mysql代码

LIKE关键字不能在那里使用

语法如下:

CREATE
    [OR REPLACE]
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]
[

mysql中的CREATE VIEW语句中没有LIKE子句,这就是为什么会出现错误消息。在处理视图列表的循环中,通过发出和解析一个语句或查询的VIEW_definition列并使用适当的CREATE VIEW语法将其前置,从而获得视图的CREATE VIEW语句

如果直接从包含视图定义的information\u schema.views查询视图列表,而不是使用show full tables命令,则查询速度会更快