[英]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.