2016-01-23 7 views
0

В настоящее время я работаю над системой ранжирования PHP/MySQL, но у меня возникла проблема с моим оператором CREATE TABLE.MySQL Не создает таблицу через PHP

Вот мой код:

mysql_select_db("DB1"); 
$numrows = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'DB1'"; 
if($numrows > 1){ 
    if($numrows > 2){ 
     $table = rand(1, $numrows); 
    }else{ 
     $table = rand(1, 2); 
    } 
}else{ 
    $table = rand(1, 1); 
} 
$checkForTable = mysql_query("SELECT 1 FROM $table LIMIT 1"); 
if($checkForTable){ 
    $query = "INSERT INTO $table (name,score) VALUES($name, $score)"; 
    $result = mysql_query($query); 
    mysql_select_db("DB2"); 
    $query2 = "INSERT INTO Leaderboard (name,score) VALUES($name, $score)"; 
    $result2 = mysql_query($query2); 
    mysql_select_db("DB1"); 
    if($result && $result2){ 
     echo "<h4 style='color:green;'>Your Score Has Been Inserted</h4><hr/>"; 
    }else{ 
     echo "<h4 style='color:red;'>We encountered an error while inserting your data </h4><hr/>"; 
    } 
}else{ 
    $newtable = "CREATE TABLE $table (
     id bigint AUTO_INCREMENT NOT NULL, 
     name varchar(255) NOT NULL, 
     score bigint(20) NOT NULL, 
     PRIMARY KEY('id') 
    )"; 
    $result = mysql_query($newtable); 
    if($result){ 

     $query = "INSERT INTO $newtable (name,score) VALUES($name,$score)"; 
     $result = mysql_query($query); 
     mysql_select_db("DB2"); 
     $query2 = "INSERT INTO Leaderboard (name,score) VALUES($name, $score)"; 
     $result2 = mysql_query($query2); 
     mysql_select_db("DB1"); 
     if($result && $result2){ 
      echo "<h4 style='color:green;'>Your Score Has Been Inserted</h4><hr/>"; 
     }else{ 
      echo "<h4 style='color:red;'>We encountered an error while inserting your data </h4><hr/>"; 
     } 

    }else{ 
     echo "TableNotCreatedException: " . mysql_error(); 
    } 
} 

Когда я попробовать код, я получаю:

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «1 (ID BigInt AUTO_INCREMENT NOT NULL, имя varcha» в строке 1

Я пытался выяснить это на некоторое время но я не имел удачи. Пожалуйста, помогите!

ответ

1

это потому, что ваша $table переменная содержит значение 1, которое вы используете в качестве имени таблицы и поэтому ваш запрос становится

CREATE TABLE 1(.... 

Per MySQL Documentation это говорит

Идентификаторы могут начинаться с цифры, но если указанная цитата не может содержать исключительно цифр.

Кроме того, ваш процитировать имя столбца, как показано ниже

PRIMARY KEY('id') 

Это скорее должно быть

PRIMARY KEY(`id`) 
+0

@ R.Harley, ты тщательно красный ответ. ошибка заключается в том, что вы используете цифру как имя таблицы, которая неприемлема. Попробуйте использовать другое имя. Прочтите документы. – Rahul

+0

Ok @Rahul, я получал некоторые ошибки с существующей таблицей, поэтому я изменил ее на CREATE TABLE, если не EXIST $ table' (...) ', и теперь я получаю ошибку. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего MySQL-сервера, для правильного синтаксиса для использования рядом с «EXIST 1» (id bigint AUTO_INCREMENT NOT NULL, nam 'в строке 1' –

+0

Я изменил таблицу CREATE TABLE $ table, чтобы CREATE TABLE ' $ table' –

Смежные вопросы