2013-11-13 3 views
0

У меня есть ниже SQL Мне нужно работать, чтобы создать базу данных и назначить пользователя к нему ЭСТ ...запустите файл .sql с помощью PHP

бы я лучше просто создать все это с помощью 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'.'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'); 

Пароли только генерируются случайным образом, поэтому на данный момент это не имеет значения.

ответ

0

Вы можете прочитать файл в строке и использовать стандартный метод для вставки.

Инструменты, такие как phpMyAdmin, имеют функцию импорта .sql.

1

Это функция для выполнения .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; 
     } 
?> 

Примечание: Пожалуйста, замените $this->db с объектом базы данных

Затем после того, как вы создали функция теперь называем его код ниже

$path = 'struct.sql';// define the path for the .sql file 
     $sql = file_get_contents($path); 
     dbImportSQL($sql);//this will read all the queries from the sql file and execute them 

ниже приведен пример 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; 
+0

Я попробую это завтра спасибо, также мне нужно заменить/* TABLE_PREFIX */на что-нибудь? –

+0

/* TABLE_PREFIX */просто, если вы используете какой-либо префикс в именах таблиц, обычно используемых в joomla и wordpress по умолчанию, если вы не хотите, чтобы этот префикс удалял его из файла sql и удалял нижнюю строку из функции также $ sql = str_replace ('/ * TABLE_PREFIX * /', DB_TABLE_PREFIX, $ sql); – Veerendra

Смежные вопросы