2013-11-15 67 views
1

到目前爲止,我得到這個代碼:在MySQL使用PHP一個新的列到現有的表添加與PDO

$column_name = strtolower($_POST['<user input>']); 
if(!preg_match('/[^A-Za-z0-9.#\\-$]/', $column_name)){ 
    if(!empty($column_name)){ 
    $st = $db_pdo->prepare("DESCRIBE <table name>"); 
    $st->execute(); 
    $st = $st->fetchAll(PDO::FETCH_COLUMN); 
    $compare = $st; 

     foreach($compare as $key){ 
      if($key === $column_name){ 
       die('Project name already exists. Please select a different name.'); 
      } 
     } 

    $st = $db_pdo->prepare("ALTER TABLE emails ADD <column name> varchar"); 
    $st->execute(); 

    } else { echo 'Project name is empty.';}  
} else { echo 'Project name can only contain letters and numbers.';} 

的簡要概述爲:

檢查中列名無效字符。 通過用戶輸入檢查列名是否爲空。 如果表已經存在,則終止頁面。

我對PHP和MySQL非常陌生,如果這些看起來像基本問題,我真的很抱歉。

我想要做的是在類型爲varchar length爲60的表中插入一個新列。就是這樣,不需要其他屬性。

我似乎無法找到合適的解釋如何與Google做到這一點,所以我希望有一些僞代碼與一些解釋。

到目前爲止,我有這樣的:

$st = $db_pdo->prepare("ALTER TABLE emails ADD <column name> varchar"); 
$st->execute(); 

而且不知道如何從這個出發。

謝謝。

回答

1
ALTER TABLE emails ADD <column name> varchar(60) 

您必須指定長度

+0

...我現在感覺很傻。謝謝,它像一個魅力。 –

+0

跟進問題。我已經得到了這段代碼:$ st = $ db_pdo-> prepare(「ALTER TABLE email ADD COLUMN:column_name varchar(60)」); $ st-> bindParam(':column_name',$ column_name); $ st-> execute();但它無法創建一個新列。我在這裏丟失了什麼 –

+0

@ user2997488嘗試在$ column_name.But之後添加PDO :: PARAM_STR,但我不確定你可以使用佔位符表或列名稱.http://stackoverflow.com/questions/13405392/pdo-bindparam-問題 – Mihai

相關問題