2017-04-18 4 views
0

私はOOP mysqliを使いこなしています。そして、私はこの問題につきました:SQLクエリがphpではなくphpmyadminで動作しています

[SQL構文に誤りがあります。あなたのMariaDBサーバーのバージョンに対応するマニュアルをチェックして、正しい構文が 'CREATE TABLE IF NOT EXISTS engine'の近くで使用されるようにしてください。 users(1行目ID INT(11)NOT NULL、USERNAME ']

これは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

エラーメッセージが2番目の行から出現したので、1つのクエリで複数のコマンドの問題が発生すると思います。 – Peter

+0

@ JohnCondeこれは複数のものを試した結果です:S – Morsus

答えて

1

複数のクエリを1つだけにするのではなく、代わりにmulti_queryを使用します。 issを参照してください最初のクエリの直後にueが表示されました。

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

+0

うん、それはうまくいった。私はこれについて考えていた、私はグーグルでも、私が見つけることができた取引の魔女は私が使いたくなかった。ありがとうございました。 – Morsus

+0

あなたは正解として私の答えを受け入れることができますか? – Peter

+1

もちろん、2分のコールドダウンがあったので、すぐにはできませんでした。ありがとうございました。 – Morsus

関連する問題