2017-04-18 168 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

相关问题