我正在创建一个登录表单,创建了数据库,现在我使用以下函数创建了表:
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经验,所以我无法看到错误在哪里!
任何帮助都非常感谢!
发布于 2013-01-22 12:22:37
你用的是引号而不是倒计时。是的,似乎没有将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;
}发布于 2013-01-22 13:38:30
做以下事情:
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;
}我不知道您在插入时使用了哪种代码,所以我做了一些假设。此外,这基本上是另一个问题。
发布于 2013-01-22 12:22:39
表名不在这里
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
https://stackoverflow.com/questions/14458418
复制相似问题