2016-08-17 10 views
0

내 웹 사이트에 "설정 스크립트"를 만들려고합니다. 나는 데이터베이스를 만들고 테이블과 일부 콘텐츠를 동시에 추가하려고합니다. 지금까지 내가 그것을 어떻게이지만, 여러 쿼리 사용하는 종류의 오프 지저분한 것 같다단일 쿼리를 사용하여 PHP를 통해 여러 MySQL 테이블을 만드는 방법은 무엇입니까?

<?php 


$servername = "localhost"; 
$username = "root"; 
$password = "password"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// Create database 
$sql = "CREATE DATABASE MYDB"; 
if ($conn->query($sql) === TRUE) { 

    echo "1. Database created successfully <br/>"; 
    $conn->select_db("MYDB"); 


    $sql_members = "CREATE TABLE MEMBERS (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    USERNAME VARCHAR(30) NOT NULL, 
    EMAIL VARCHAR(40) NOT NULL, 
    DISCOUNT VARCHAR(5), 
    PASSW CHAR(128), 
    ROLE VARCHAR(9) 
    )"; 


    if ($conn->query($sql_members) === TRUE) { 
     echo "2. Table MEMBERS created successfully <br/>"; 
    } else { 
     echo "Error creating table: " . $conn->error; 
    } 

    $sql_content = "CREATE TABLE CONTENT (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    TITLE VARCHAR(30) NOT NULL, 
    TEXT VARCHAR(30) NOT NULL 
    )"; 

    if ($conn->query($sql_content) === TRUE) { 
     echo "3. Table CONTENT created successfully <br/>"; 
    } else { 
     echo "Error creating table: " . $conn->error; 
    } 



} else { 
    echo "Error creating database: " . $conn->error; 
} 

$conn->close(); 


?> 

이 더 나은 방법이 있나요를? 감사합니다.

는 == UPDATE 나는 데이터베이스를 내보내고 내 설치 쿼리로 결과 .SQL 파일을 사용하지만, 뭔가 잘못 위해 노력했다

==, 내가 얻을 :

을 만드는 중 오류 테이블 : SQL 구문에 오류가 있습니다. 라인 12

CREATE TABLE IF NOT EXISTS `CONTACTS` (
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `NAME` varchar(25) COLLATE utf8_romanian_ci NOT NULL, 
    `PHONE` varchar(16) COLLATE utf8_romanian_ci NOT NULL, 
    `EMAIL` varchar(35) COLLATE utf8_romanian_ci NOT NULL, 
    `ADDRESS` text COLLATE utf8_romanian_ci NOT NULL, 
    `CITY` varchar(16) COLLATE utf8_romanian_ci NOT NULL, 
    `COUNTRY` varchar(16) COLLATE utf8_romanian_ci NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_romanian_ci AUTO_INCREMENT=2 ; 

INSERT INTO `CONTACTS` (`ID`, `NAME`, `PHONE`, `EMAIL`, `ADDRESS`, `CITY`, `COUNTRY`) VALUES 
(1, 'Peter Brown', '0742062307', '[email protected]', 'Avenue 13.', 'Santaclaus', 'Austria'); 
에서 ' CONTACTS ( ID, NAME, PHONE, EMAIL, ADDRESS, CITY,`COUN INTO INSERT'근처 사용할 수있는 권리 구문 MySQL 서버 버전에 해당하는 설명서를 확인

내 여러 쿼리를 실행하기위한 "multi_query()"를 필요

== SOLUTUION의 ==.

+0

모든 SQL 쿼리를 하나의 파일에 쓰고'; '를 사용하여 구분할 수 있습니다. –

+1

설명서 읽기 : http://php.net/manual/en/pdo.begintrans action.php 또는 stackoverflow 검색 : http://stackoverflow.com/questions/6346674/pdo-support-for-multiple-queries-pdo-mysql-pdo-mysqlnd;) – Bobot

+0

@BenseidSeid 당신이 샘플을 드롭 수 plz - 그냥 내가 뭔가를 놓친 경우에 대비해서. 감사! –

답변

2

: P

$errors = []; 

$table1 = "CREATE TABLE MEMBERS (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    USERNAME VARCHAR(30) NOT NULL, 
    EMAIL VARCHAR(40) NOT NULL, 
    DISCOUNT VARCHAR(5), 
    PASSW CHAR(128), 
    ROLE VARCHAR(9) 
    )"; 

$table2 = "CREATE TABLE CONTENT (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    TITLE VARCHAR(30) NOT NULL, 
    TEXT VARCHAR(30) NOT NULL 
    )"; 


$tables = [$table1, $table2]; 


foreach($tables as $k => $sql){ 
    $query = @$conn->query($sql); 

    if(!$query) 
     $errors[] = "Table $k : Creation failed ($conn->error)"; 
    else 
     $errors[] = "Table $k : Creation done"; 
} 


foreach($errors as $msg) { 
    echo "$msg <br>"; 
} 
+0

제안 해 주셔서 감사합니다 :) –

0

export the whole database including all tables 명령 줄을 사용하거나 PhPMyAdmin을 사용할 수 있습니다. 그런 다음 PHP에서 파일의 내용을 쿼리하여 데이터베이스를 만듭니다.

+1

남자! 이것은 괴물 같은 좋은 생각이다 !!! 처음부터 모든 내용을 손으로 쓴 것 같았습니다. 감사!! –

+0

기꺼이 도와 드리겠습니다! –

0
당신이 파일을 만들고 그 안에 모든 SQL 쿼리를 넣을 수 있습니다

.. PHP 코드에서 다음

CREATE TABLE MEMBERS (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    USERNAME VARCHAR(30) NOT NULL, 
    EMAIL VARCHAR(40) NOT NULL, 
    DISCOUNT VARCHAR(5), 
    PASSW CHAR(128), 
    ROLE VARCHAR(9) 
); 

CREATE TABLE CONTENT (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    TITLE VARCHAR(30) NOT NULL, 
    TEXT VARCHAR(30) NOT NULL 
); 

: 당신은 너무이 시도 할 수

$query = file_get_contents ('queries.sql'); 

if ($conn->query($query) === TRUE) { 
    echo "all tables created successfully <br/>"; 
} else { 
    echo "Error creating tables: " . $conn->error; 
} 
+0

내 설정 스크립트에 .sql을 사용하려고했으나 데이터를 테이블에 삽입 할 때 오류가 발생했습니다. 업데이트 된 응답 plz를 확인할 수 있습니까? –

+0

여기서'=== TRUE'는 정말로 필요합니까? – tadman