2016-02-13 56 views
0

我有一個表稱爲流派,它是一個音樂數據庫的表。該表包含兩列,genre_id和genre_name。 Genre_id是主鍵,它被設置爲自動增量。我創建了一個表單添加流派,像這樣:PDO表格只添加到主鍵

<?php 
    if (empty($_POST)) { 
?> 
<form name="newaddgenre" action="newaddgenre.php" method="POST"> 
    <label for 'genre'>Genre: </label> 
    <input type="text" name="genre_name"/> 
    <br/> 
    <button type="button" class="btn btn-primary">Submit</button> 
</form> 
<?php 
} else { 
    $user = 'root'; 
    $pass = 'mysql'; 
    $db = new PDO ('mysql:host=localhost;dbname=musicdb', $user, $pass); 
    $form = $_POST; 
    $genre_name = $form[ 'genre_name' ]; 
    $sql = "INSERT INTO genre (genre_name) 
    VALUES (genre_name)"; 
    $query = $db->prepare($sql); 
    $query->execute(array(':genre_name'=>$genre_name)); 
    print_r($_POST); 
} 
?> 

當我在瀏覽器中打開這個,形式出現,我可以添加一個流派,但是當我做SELECT * FROM流派,正在創建的唯一的事情是genre_id。表中沒有genre_name。我究竟做錯了什麼?

免責聲明:這是一個家庭作業,我沒有太多的經驗與PHP所以原諒我,如果這個代碼有明顯的錯誤。

+1

什麼是'genre_name'表定義?你的查詢中沒有佔位符。請再讀一遍講座。 –

+0

用'VALUES(:genre_name)'替換'VALUES(genre_name)'。注意:它現在是查詢中的一個「佔位符」?而不是原始的列名稱?我是否提到過在前綴佔位符和變量名稱前加一些內容以確保它們不與'數據庫對象'匹配,可以節省數小時的調試時間? –

+0

這是一個瘋狂的方式:可以製造或破壞一些東西......非常感謝,就是這樣。 – jadda313

回答

0

:genre_name在您的SQL語句中沒有定義。嘗試像這樣點亮:

$sql = "INSERT INTO genre (genre_name) 
VALUES (:genre_name)"; 
$query = $db->prepare($sql); 
$query->execute(array(':genre_name'=>$genre_name));