簡體   English   中英

MySQL函數創建表給我一個語法錯誤

[英]MySQL function Create Table gives me a Syntax error

我正在創建一個登錄表單,創建了數據庫,現在正在使用此功能創建表:

function CreateTable()
{
    $qry = "CREATE TABLE $this->tablename (
            'id' INT NOT NULL AUTO_INCREMENT ,
            'name' VARCHAR( 128 ) NOT NULL ,
            'email' VARCHAR( 64 ) NOT NULL ,
            'phone_number' VARCHAR( 16 ) NOT NULL ,
            'username' VARCHAR( 16 ) NOT NULL ,
            'password' VARCHAR( 32 ) NOT NULL ,
            'confirmcode' VARCHAR(32) ,
            PRIMARY KEY ('id')
            )";

    if(!mysql_query($qry,$this->connection))
    {
        $this->HandleDBError("Error creating the table \nquery was\n $qry");
        return false;
    }
    return true;
}

問題是,每次我嘗試登錄以測試表單時,都會出現此錯誤:

創建表查詢時出錯是CREATE TABLE('id'INT NOT NULL AUTO_INCREMENT,'name'VARCHAR(128)NOT NULL,'email'VARCHAR(64)NOT NULL,'phone_number'VARCHAR(16)NOT NULL,'用戶名' VARCHAR(16)NOT NULL,'password'VARCHAR(32)NOT NULL,'confirmcode'VARCHAR(32),PRIMARY KEY('id'))mysqlerror:您的SQL語法有錯誤; 檢查與您的MySQL服務器版本相對應的手冊以獲取正確的語法,以在第1行的'(''id'INT NOT NULL AUTO_INCREMENT,'name'VARC'附近使用

所以很明顯,這行上有一個語法錯誤,但是由於我沒有PHP的經驗,所以我看不到錯誤在哪里!

任何幫助都非常感謝!

您使用的是引號,而不是反引號。 是的,似乎沒有將Tabe名稱傳遞到該函數中。 您的函數應如下所示:

function CreateTable($tableName)
{
    $qry = "CREATE TABLE IF NOT EXISTS $tableName (
            `id` INT NOT NULL AUTO_INCREMENT ,
            `name` VARCHAR( 128 ) NOT NULL ,
            `email` VARCHAR( 64 ) NOT NULL ,
            `phone_number` VARCHAR( 16 ) NOT NULL ,
            `username` VARCHAR( 16 ) NOT NULL ,
            `password` VARCHAR( 32 ) NOT NULL ,
            `confirmcode` VARCHAR(32) ,
            PRIMARY KEY (`id`)
            );";

    if(!mysql_query($qry,$this->connection))
    {
        $this->HandleDBError("Error creating the table \nquery was\n $qry");
        return false;
    }
    return true;
}

做類似的事情:

function Insert($tableName)
{
$tableName = newtable;
$insert_query = "insert into $tableName( name, email, username, password, confirmcode ) values ("bob", "bobsemailadress@hotmail.com", 911, "bob2013", "secrete", "1");";


    if(!mysql_query($qry,$this->connection))
    {
        $this->HandleDBError("Error inserting into the table \nquery was\n $qry");
        return false;
    }
    return true;
}

我不知道您使用了哪個代碼進行插入,因此我做了一些假設。 此外,這基本上是另一個問題。

表名不在這里

CREATE TABLE ( 'id' INT NOT NULL AUTO_INCREMENT , 'name' VARCHAR( 128 ) NOT NULL , 'email' VARCHAR( 64 ) NOT NULL , 'phone_number' VARCHAR( 16 ) NOT NULL , 'username' VARCHAR( 16 ) NOT NULL , 'password' VARCHAR( 32 ) NOT NULL , 'confirmcode' VARCHAR(32) , PRIMARY KEY ('id') )

應該是這樣的

CREATE TABLE `table` ( 'id' INT NOT NULL AUTO_INCREMENT , 'name' VARCHAR( 128 ) NOT NULL , 'email' VARCHAR( 64 ) NOT NULL , 'phone_number' VARCHAR( 16 ) NOT NULL , 'username' VARCHAR( 16 ) NOT NULL , 'password' VARCHAR( 32 ) NOT NULL , 'confirmcode' VARCHAR(32) , PRIMARY KEY ('id') )

所以檢查你的$this->tablename

嘗試用括號將$this->tablename括起來,即

$qry = "CREATE TABLE {$this->tablename} ( ... )";

此外,您不能使用單引號引起來的字段名稱(在SQL中通常使用引號引起來的字符串)。 您應該改用反引號(`)。

為什么不只使用HeidiSql創建數據庫,然后與表單建立連接? 這要容易得多。 並且當使用heidi時,除非您為插入,更新和刪除數據到數據庫中編寫了錯誤的php代碼,否則不會出現任何sql錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM