PDO表单仅添加到主键

时间:2016-02-13 21:37:33

标签: php mysql forms pdo

我有一个名为genre的表,它是一个音乐数据库表。该表包含两列,genre_id和genre_name。 Genre_id是主键,它设置为自动增量。我创建了一个表单来添加类型,如下所示:

<?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 );
}
?>

当我在浏览器中打开它时,表单出现并且我可以添加一个类型,但是当我从类型中选择*时,唯一创建的是genre_id。表中没有genre_name。我究竟做错了什么?

免责声明:这是一项家庭作业,我对PHP没有太多经验,所以如果这段代码有明显错误,请原谅我。

1 个答案:

答案 0 :(得分:0)

:genre_name在您的SQL语句中没有定义。尝试这样点亮:

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