2016-08-17 6 views
0

Я пытаюсь создать «установочный скрипт» для своего сайта. Я хотел бы создать базу данных, одновременно добавить таблицы и некоторые материалы. До сих пор это, как я это сделал, но это кажется отчасти от неаккуратно, используя несколько запросов:Как создать несколько таблиц MySQL через PHP, используя один запрос?

<?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 для правого синтаксиса использовать вблизи 'INSERT INTO CONTACTS (ID, NAME, PHONE, EMAIL, ADDRESS, CITY, `COUN' в строке 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'); 

== Solutuion ==

мне нужен "multi_query()" для выполнения своих многочисленных запросов.

+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 вы могли бы плз отказаться от образца - просто в случае, если я что-то пропущу. Благодаря! –

ответ

2

Вы можете попробовать это тоже: р

$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 для моего скрипта установки, но я получаю сообщение об ошибке, когда дело доходит до вставки данных в таблицы, не могли бы вы проверить мой обновленный ответ plz? –

+0

Является ли '=== TRUE' здесь действительно необходимым? – tadman

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

  • Нет связанных вопросов^_^