2016-02-13 87 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));