2017-03-27 38 views
0

所以我想用mysqli::multi_query創建多個表,但由於某種原因,似乎我的編碼沒有正確執行。mysqli創建multllie表

我認爲問題是執行多個。目前我的數據庫沒有任何所需的表格,所以它應該執行CreateTable函數。

CODE

<?php 

// Create connection 
$conn = new mysqli($servername, $username, $password, $database); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected database successfully"; 


/* create table in database */ 

function CreateTable($conn) { 

    $sql = "CREATE TABLE Address(
        id INT(10) AUTO_INCREMENT PRIMARY KEY, 
        Unit VARCHAR (20), 
        Lot VARCHAR(20), 
        FloorNumber VARCHAR(5), 
        BuildingName VARCHAR(50), 
        HighorLand VARCHAR (10), 
        StreetName VARCHAR (50) NOT NULL, 
        City VARCHAR(15)NOT NULL, 
        Postcode VARCHAR(5) NOT NULL, 
        State VARCHAR(10) NOT NULL, 
        reg_date TIMESTAMP);"; 

    $sql .= "CREATE TABLE HomeUser(
        Hid INT(100) AUTO_INCREMENT PRIMARY KEY, 
        HName VARCHAR (200) NOT NULL, 
        HNRIC VARCHAR (20) NOT NULL, 
        HContatcnum VARCHAR (15) NOT NULL, 
        HEmail VARCHAR (50) NOT NULL, 
        HPromocode VARCHAR (10) NOT NULL, 
        HICFront VARCHAR (80), 
        HICBack VARCHAR (80), 
        HUtilitybill VARCHAR (80));"; 

    $sql .= "CREATE TABLE BusinessUser(
        Bid INT(100) AUTO_INCREMENT PRIMARY KEY, 
        BName VARCHAR (100) NOT NULL, 
        BEmail VARCHAR (50) NOT NULL, 
        BComregnum VARCHAR (10) NOT NULL, 
        BContactnum VARCHAR (15) NOT NULL, 
        BNoemployee INT (5), 
        BPromocode VARCHAR (10), 
        BForm9 VARCHAR (80), 
        BForm24 VARCHAR (80), 
        BForm49 VARCHAR (80), 
        BDirectoric VARCHAR (80));"; 

    /* execute multi query */ 
    if (($conn->multi_query($sql) === TRUE) { 
     echo "Table created successfully"; 
    } else { 
     echo "Error creating table: " . mysqli_error($conn); 
    } 
} 

/* Check table exist or not,if exist insert data,if not create table and insert data */ 

$CheckTable = tep_db_query("SHOW TABLES LIKE 'Address'"); 
if (tep_db_num_rows($CheckTable) > 0) { 
    echo 'Table exists'; 
} else { 
    CreateTable($conn); 
} 


/* close connection */ 
$conn->close(); 
?> 
+0

在您的代碼上看不到任何連接細節。請將其粘貼。 – Syfer

+0

@Syfer我已經更新連接信息 – newb

+0

希望你有必要的mysql用戶權限來創建表。 (($ conn-> multi_query($ sql)=== TRUE){*它應該是如果(($ conn-> multi_query($ sql)=== TRUE)){ – CodeMonkey

回答

0

mysqli::multi_query是似乎沒有什麼。

與其他PHP函數不同,它並不是放縱貨物崇拜編程。爲了使用它,你需要有一些PHP的經驗和徹底閱讀PHP手冊的習慣。

所以最好避免這種功能了一會兒,用簡單的reqular mysqli_query(),當場運行您的查詢,而不是在一個單一的怪物聲明收集他們的

function CreateTable($conn) { 

    $sql = "CREATE TABLE Address(
        id INT(10) AUTO_INCREMENT PRIMARY KEY, 
        Unit VARCHAR (20), 
        Lot VARCHAR(20), 
        FloorNumber VARCHAR(5), 
        BuildingName VARCHAR(50), 
        HighorLand VARCHAR (10), 
        StreetName VARCHAR (50) NOT NULL, 
        City VARCHAR(15)NOT NULL, 
        Postcode VARCHAR(5) NOT NULL, 
        State VARCHAR(10) NOT NULL, 
        reg_date TIMESTAMP);"; 

    $conn->query($sql); 
    $sql = "CREATE TABLE HomeUser(
        Hid INT(100) AUTO_INCREMENT PRIMARY KEY, 
        HName VARCHAR (200) NOT NULL, 
        HNRIC VARCHAR (20) NOT NULL, 
        HContatcnum VARCHAR (15) NOT NULL, 
        HEmail VARCHAR (50) NOT NULL, 
        HPromocode VARCHAR (10) NOT NULL, 
        HICFront VARCHAR (80), 
        HICBack VARCHAR (80), 
        HUtilitybill VARCHAR (80));"; 
    $conn->query($sql); 
    $sql = "CREATE TABLE BusinessUser(
        Bid INT(100) AUTO_INCREMENT PRIMARY KEY, 
        BName VARCHAR (100) NOT NULL, 
        BEmail VARCHAR (50) NOT NULL, 
        BComregnum VARCHAR (10) NOT NULL, 
        BContactnum VARCHAR (15) NOT NULL, 
        BNoemployee INT (5), 
        BPromocode VARCHAR (10), 
        BForm9 VARCHAR (80), 
        BForm24 VARCHAR (80), 
        BForm49 VARCHAR (80), 
        BDirectoric VARCHAR (80));"; 
    $conn->query($sql); 
} 

它會像一個魅力