我正在为我正在开发的应用程序创建一个安装脚本,需要在PHP中动态创建数据库.我已经有了它来创建数据库,但现在我需要加载几个.sql文件.我曾打算一次打开文件和mysql_query一行 - 直到我查看模式文件并意识到它们不是每行一个查询.
那么,我如何从PHP中加载一个sql文件(如phpMyAdmin的import命令)?
我*.sql在创建新的网站数据库时使用了两个文件.第一个文件创建所有表.第二个文件填充一些默认记录.我想从PHP执行这些文件.我也使用Zend_Framework,如果这将有助于实现这一目标.
附加信息
解
使用shell_exec()......
$command = 'mysql'
. ' --host=' . $vals['db_host']
. ' --user=' . $vals['db_user']
. ' --password=' . $vals['db_pass']
. ' --database=' . $vals['db_name']
. ' --execute="SOURCE ' . $script_path
;
$output1 = shell_exec($command . '/site_db.sql"');
$output2 = shell_exec($command . '/site_structure.sql"');
Run Code Online (Sandbox Code Playgroud)
...我从来没有得到有用的输出,但在另一个线程上遵循一些建议,最后让它全部工作.我切换到命令的格式,而不是执行文件.--option=value--execute="SOURCE ..."<
此外,我从来没有得到shell_exec()和和之间的差异的良好解释exec().
我想用.从存储过程中调用sql脚本就像这样...
delimiter ///
create procedure append_procedure()
BEGIN
\. test.sql;
END; ///
delimiter ;
Run Code Online (Sandbox Code Playgroud)
我得到了"未能打开'test.sql;' "我以这种方式运行时出错.我也试过了!但后来我得到了一个拒绝许可的错误.但是,我无法消除; 或者整件事都破了.有没有解决的办法?
我究竟做错了什么?
我试图使用PHP创建多个MySQL表,但它给出了错误,我无法理清它有什么问题.
PHP代码:
$sql = ' CREATE TABLE IF NOT EXISTS `mod_reminder_entries`
(
`id` INT(10) NOT NULL auto_increment,
`user_id` INT(10) NOT NULL,
`entry_name` VARCHAR(255) NOT NULL,
`entry_value` INT(10) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`)
);
CREATE TABLE IF NOT EXISTS `second_table`
(
`user_id` INT(10) NOT NULL,
`fieldstotal` INT(10) NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`)
); ';
mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
它给出了错误,除了不用担心mysql连接.我正确地连接数据库,我已经测试过它,语法肯定有些不对劲.
您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'CREATE TABLE IF NOT EXISTS
second_table(user_idINT
此查询运行,但它会生成表的名称,而不是从该表中实际选择.
SELECT T.*
FROM (SELECT tablename
FROM ListOfTables
WHERE id = 0) AS T
Run Code Online (Sandbox Code Playgroud)
在ListOfTables包含的地方id=0, tablename='some_table',我想返回相同的结果集,就好像我直接写了一样:
SELECT * FROM some_table
Run Code Online (Sandbox Code Playgroud)
在MySQL 5中是否有以本机方式执行此操作,或者我是否必须在应用程序中执行此操作?
这可能是显而易见的,但我已经通过phpmyadmin将数据库导出到.sql文件.我试图通过PHP脚本将文件导入另一个数据库,但我无法弄清楚如何做到这一点.我确信这很容易,因为我可以通过phpmyadmin运行查询轻松完成同样的事情.有什么建议?