2016-08-17 41 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語法有錯誤;檢查對應於你的MySQL服務器版本的權利 語法使用近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'); 
'INSERT INTO CONTACTSIDNAMEPHONEEMAILADDRESSCITY,`COUN' 的 手冊

== == SOLUTUION

我需要 「multi_query()」 執行我的多個查詢。

+0

您可以將所有的sql查詢寫入單個文件,並使用';'將它們分開 – 2016-08-17 13:10:06

+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

MAN!這是一個奇怪的好主意!我從一開始就要把所有的東西都寫出來。謝謝!! –

+0

很高興能幫到你! –

0

你可以創建一個文件,並把你的所有SQL查詢的吧..

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 
); 

然後在你的PHP代碼:

$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用於我的安裝腳本,但是在將數據插入表格時出現錯誤,您能查看我的更新回答嗎? –

+0

真的需要'=== TRUE'嗎? – tadman