使用PHP运行.sql文件
我有下面的sql我需要运行创建一个数据库和分配一个用户给它等 我最好使用PHP创建所有这些,还是运行这个.sql文件来创建所有这些使用PHP运行.sql文件,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我有下面的sql我需要运行创建一个数据库和分配一个用户给它等 我最好使用PHP创建所有这些,还是运行这个.sql文件来创建所有这些 CREATE DATABASE 'ppa' CREATE USER 'ppa_user'@'localhost' IDENTIFIED BY 'fSMthSGKVpDtcxDv'; GRANT SELECT, INSERT, UPDATE ON 'ppa'.* TO 'ppa_user'@'localhost'; CREATE TABLE 'ppa'.'user
CREATE DATABASE 'ppa'
CREATE USER 'ppa_user'@'localhost' IDENTIFIED BY 'fSMthSGKVpDtcxDv';
GRANT SELECT, INSERT, UPDATE ON 'ppa'.* TO 'ppa_user'@'localhost';
CREATE TABLE 'ppa'.'users' (
'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
'email' VARCHAR(30) NOT NULL,
'password' CHAR(32) NOT NULL,
'perms' VARCHAR(30) NOT NULL,
'salt' CHAR(32) NOT NULL
) ENGINE = InnoDB;
CREATE TABLE 'ppa'.'login_attepts' (
'user_id' INT(11) NOT NULL,
'time' VARCHAR(30) NOT NULL
) ENGINE = InnoDB;
INSERT INTO 'ppa'.'users' VALUES(1, 'admin', 'af453d19feb2520c8c0d30fb39ebd211', 'admin', '8269ebbf4c9cf901170ad58238deabb1');
密码只是随机生成的,所以现在不重要 您可以将文件读入字符串,并使用标准方法进行插入
phpMyAdmin等工具具有.sql导入功能。这是执行.sql文件并运行在.sql文件中写入的所有查询的功能
<?php
//Import (executes) the SQL passed as parameter making some proper adaptations.
function dbImportSQL($sql, $needle = '')
{
$sql = str_replace('/*TABLE_PREFIX*/', DB_TABLE_PREFIX, $sql);
$sentences = explode( $needle . ';', $sql);
// PREPARE THE QUERIES
$var_l = count($sentences);
$s_temp = '';
for($var_k=0;$var_k<$var_l;$var_k++) {
$s = $s_temp.$sentences[$var_k];
if(!empty($s) && trim($s)!='') {
$s .= $needle;
$simple_comma = substr_count($s, "'");
$scaped_simple_comma = substr_count($s, "\'");
if(($simple_comma-$scaped_simple_comma)%2==0) {
$sentences[$var_k] = $s;
$s_temp = '';
//echo "[OK] ".$s." <br />";
} else {
unset($sentences[$var_k]);
$s_temp = $s.";";
//echo "[FAIL] ".$s." <br />";
}
} else {
unset($sentences[$var_k]);
}
}
foreach($sentences as $s) {
$s = trim($s);
if( !empty($s) ) {
$s = trim($s);// . $needle;
if( $this->db->query($s) ) {
$this->debug($s);
} else {
$this->debug($s . ' | ' . $this->db->error . ' (' . $this->db->errno . ')', false);
}
}
}
$this->db_errno = $this->db->errno;
if ($this->db_errno != 0) return false;
return true;
}
?>
下面是示例sql(struct.sql)文件,如果需要,您可以根据具体需要在函数中进行更改
CREATE TABLE IF NOT EXISTS /*TABLE_PREFIX*/t_cpviewer_plan_headers (
`sid` int(11) NOT NULL AUTO_INCREMENT,
`cp` text NOT NULL,
`name` text NOT NULL,
`address` text NOT NULL,
`pages` int(11) NOT NULL DEFAULT '0',
`uploaded` date NOT NULL,
`status` varchar(255) NOT NULL,
PRIMARY KEY (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS /*TABLE_PREFIX*/t_cpviewer_plan_levels (
`sid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`CP` text NOT NULL,
`image` varchar(255) NOT NULL,
`page` int(4) NOT NULL,
`level` int(3) NOT NULL,
`label` text NOT NULL,
PRIMARY KEY (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER TABLE /*TABLE_PREFIX*/t_item ADD cp_number VARCHAR( 255 ) NOT NULL AFTER dt_expiration ,
ADD cp_level INT( 11 ) NOT NULL AFTER cp_number;
我明天会试试这个,谢谢,还有,我是否需要用任何东西替换/*TABLE_PREFIX*/呢?/*TABLE_PREFIX*/只是如果您在joomla和wordpress中默认使用的表名中使用了任何类型的前缀,如果您不希望该前缀从sql文件中删除,并从函数中删除下面的行$sql=str_replace('/*TABLE_PREFIX*/',DB_TABLE_PREFIX,$sql);
CREATE TABLE IF NOT EXISTS /*TABLE_PREFIX*/t_cpviewer_plan_headers (
`sid` int(11) NOT NULL AUTO_INCREMENT,
`cp` text NOT NULL,
`name` text NOT NULL,
`address` text NOT NULL,
`pages` int(11) NOT NULL DEFAULT '0',
`uploaded` date NOT NULL,
`status` varchar(255) NOT NULL,
PRIMARY KEY (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS /*TABLE_PREFIX*/t_cpviewer_plan_levels (
`sid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`CP` text NOT NULL,
`image` varchar(255) NOT NULL,
`page` int(4) NOT NULL,
`level` int(3) NOT NULL,
`label` text NOT NULL,
PRIMARY KEY (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER TABLE /*TABLE_PREFIX*/t_item ADD cp_number VARCHAR( 255 ) NOT NULL AFTER dt_expiration ,
ADD cp_level INT( 11 ) NOT NULL AFTER cp_number;