首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL函数创建表给我一个语法错误

MySQL函数创建表给我一个语法错误
EN

Stack Overflow用户
提问于 2013-01-22 12:19:34
回答 5查看 1.1K关注 0票数 0

我正在创建一个登录表单,创建了数据库,现在我使用以下函数创建了表:

代码语言:javascript
复制
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;
}

问题是,每当我尝试登录来测试表单时,我都会得到以下错误:

创建表查询的错误是:创建表( 'id‘INT不为空AUTO_INCREMENT、'name’VARCHAR( 128 )非空、'phone_number‘VARCHAR( 64 ) NULL、’phone_number‘VARCHAR( 16 ) NULL、’用户名‘VARCHAR( 16 ) NULL、'password’VARCHAR( 32 ) NULL、‘确认码’VARCHAR( 32)、主键('id') mysqlerror:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法以使用NOT '( 'id‘INT非空AUTO_INCREMENT,'name’VARC‘在第1行

因此,很明显,在这一行中存在语法错误,但是由于我没有PHP经验,所以我无法看到错误在哪里!

任何帮助都非常感谢!

EN

回答 5

Stack Overflow用户

发布于 2013-01-22 12:22:37

你用的是引号而不是倒计时。是的,似乎没有将tabe名称传递到函数中。您的功能应该更像这样:

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2013-01-22 13:38:30

做以下事情:

代码语言:javascript
复制
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;
}

我不知道您在插入时使用了哪种代码,所以我做了一些假设。此外,这基本上是另一个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-01-22 12:22:39

表名不在这里

代码语言:javascript
复制
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') )

应该是这样的

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14458418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档