2013-03-26 2 views
0

я хочу, чтобы создать таблицу в базе данных с помощью PHP (mysql_querry)Ошибка при создании таблицы базы данных с помощью PHP

Таблицы имеющей «N» числа атрибутов. Из атрибутов атрибутов n, n-2 доступны в массиве.

Я не могу объяснить, где я получаю массив, но это выглядит как this- http://i.stack.imgur.com/tH98f.png

Вот код для создания строки для выполнения в mysql_querry.

$str="CREATE TABLE $register_name(id int NOT NULL AUTO_INCREMENT, date DATE, "; 
    $j=0; 
    while($j<$i) 
    { 
     $str=$str.$roll_no[$j]." int(100), "; 
     $j++; 

    } 
    $str=$str."PRIMARY KEY(id))"; 


require('blogic.php'); 
$obj = new blogic(); 
$createtable=$obj->create($str); 

Когда я эхо $ ул, я получаю это:

CREATE TABLE $register_name(id int NOT NULL AUTO_INCREMENT, date DATE, 913310128 int(100), 0913310129 int(100), PRIMARY KEY(id)) 

Однако он дает ошибку, как этот

Вы имеете ошибку в вашем синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для корректного синтаксиса использовать около '913310128 Int (100), 0913310129 INT (100), PRIMARY KEY (ID)) на линии 1

I не понимаю проблему. когда я не использую массив roll_no, он отлично работает. Пожалуйста, дайте мне знать, в чем проблема.

+0

Я никогда не видел MySQL имена полей неоспоримым число, например 913310128, проверьте, если это позволено. Подумайте, чтобы изменить его на что-то вроде i_ 913310128 – herrjeh42

ответ

1

От docs:

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

Таким образом, вы могли бы просто процитировать название:

$str=$str."`".$roll_no[$j]."` int(100), "; 

Или префикс его с письмом:

$str=$str."c".$roll_no[$j]." int(100), "; 
+0

Я думаю, что цитаты должны быть обратными. – Barmar

+0

Я пробовал это, но он дает ту же ошибку @Barmar –

+0

Вы пробовали его с обратными окнами или одиночными кавычками, которые Рассел первоначально вложил в свой ответ? – Barmar

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