2017-04-18 165 views
0

我正在用OOP mysqli搞亂。我偶然發現了這個問題:SQL查詢不能在php中工作,但在phpmyadmin中工作

運行查詢時出錯[您的SQL語法有錯誤;請檢查與您的MariaDB服務器版本相對應的手冊,以找到在'CREATE TABLE IF NOT EXISTS engine'附近使用的正確語法。 usersID INT(11)NOT NULL,USERNAME'在行1]

這是PHP代碼:

function InstallDB($db){ 
    $sql = 
    "CREATE DATABASE IF NOT EXISTS `$this->dbname`; ". 
    "CREATE TABLE IF NOT EXISTS `$this->dbname`.`$this->users` (". 
    "`ID` INT(11) NOT NULL, ". 
    "`USERNAME` varchar(60) NOT NULL,". 
    "`PASSWORD` varchar(60) NOT NULL,". 
    "`EMAIL` varchar(100) NOT NULL,". 
    "`IMAGE` varchar(250) NULL,". 
    "`LEVEL` INT(11) NOT NULL DEFAULT '1'". 
    ") ENGINE=InnoDB DEFAULT CHARSET=utf8;". 

    "CREATE TABLE IF NOT EXISTS `$this->dbname`.`$this->settings` (". 
    "`DOMAIN` varchar(60) NOT NULL,". 
    "`SLOGAN` varchar(255) NOT NULL,". 
    "`EMAIL` varchar(100) NOT NULL". 
    ") ENGINE=InnoDB DEFAULT CHARSET=utf8;"; 

    if(!$result = $db->query($sql)){ 
     die('SQL['.$sql.']<br>There was an error running the query [' . $db->error . ']<br>'); 
    } 

    echo "Installed!<br>"; 
} 

嘗試了不同的引號,沒有運氣 我也呼應了$ SQL ,它複製它並在phpmyadmin執行,它的工作完美。但仍然不會做任何PHP內部。 謝謝。

+0

爲什麼所有的級聯?簡化您的代碼。 PHP允許在字符串中換行。使用它們。 –

+0

我認爲多個命令在一個查詢中的問題,因爲錯誤消息出現在第二行。 – Peter

+0

@JohnConde這只是嘗試多種事情的結果:S – Morsus

回答

1

使用multi_query,而不是查詢,因爲你想多個查詢不只一個。見iss在第一次查詢後,ue馬上出現。

http://php.net/manual/en/mysqli.multi-query.php

+0

是的,這工作。我正在考慮這個問題,我甚至用Google搜索了一下,但我能找到的只是我不想使用的交易。謝謝。 – Morsus

+0

你能接受我的答案作爲一個正確的答案嗎? – Peter

+1

當然,有2分鐘的冷卻時間,所以我不能馬上去做。再次感謝你。 – Morsus

相關問題