2011-11-25 32 views
0

我試圖創建一個動態表單生成器。因此,PHP從數據庫中獲取一組名稱,並創建一個新名稱爲列名的表。這很有效,直到一個或多個名稱是整數(例如'12345')。然後腳本失敗。當我使用整數名稱列CREATE TABLE失敗

如何強制PHP的MySQL給數字表名稱?

這裏是一塊代碼的(其仍然是一個草案):

$slaop = 'id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id)'; 
require_once 'dbconnect.php'; 
$connector = new DbConnector(); 
$result = $connector->query('SELECT * FROM '.$form.' ORDER BY rang'); 
while ($opslaan = $connector->fetchArray($result)){ 
    $slaop .= ', '; 
    $slaop .= $opslaan['tekstid']; 
    $slaop .= ' TEXT'; 
} 
echo $slaop; 
// OPSLAAN 
$formnaam = $_GET['welkform']; 
require_once 'dbconnectsave.php'; 
$connector = new DbConnectorSave(); 
$connector->query('CREATE TABLE '.$formnaam.'('.$slaop.')') 
    or die(mysql_error()); 

$opslaan['tekstid'];是其中整數的文本被稱爲部分。

有沒有人有想法?

+1

你不應該。這不是一個好習慣。 – Flukey

回答

0

使用以字母開頭的前綴作爲列名的前綴。

1

我該如何強制PHP的MySQL的數字表名稱?

也許你可以強制你的應用程序不使用這樣的字段名稱?

還改變整個設計,以及不使用動態創建的表,並使用更通常的方法來存儲表結構在某些表中?

+0

有時只需要使用數字。如果我在phpmyadmin中創建一個表,它會接受每個列的名稱,即使它在數字中。 – MadHouse

+0

你可以給我一個用例,它需要使用數字作爲字段名嗎?我很好奇... – Flukey

+0

類7b例如。 – MadHouse

5

爲什麼不用表單名稱加前綴?然後整數無關緊要...

2

正如其他人所指出的,這可能不是一個好主意。

但是,如果列名被反引號包圍,仍然可以這樣做。這裏有幾個MySQL的例子:

create table abc (id int, 123 int); -- fails 

create table abc (id int, `123` int); -- succeeds 
相關問題