使用PDO插入数据.我尝试了很多方法并且失败了

For*_*er. -2 php mysql forms pdo insert

我刚开始学习PDO.我已连接到我的数据库,并且我在mySql数据库中进行了正常工作的登录.现在我试图从表单中获取三个数据,然后将它们插入表中.我已经在这一周了,我提出的每个版本都失败了.当我检查表时它仍然是空的,我没有收到任何错误消息.

由于我有其他PDO操作正在运行,我相信问题出现在下面的代码中.涉及的按钮名为'addGig'.这是我第一次使用按钮的名称......我对此并不自信.

我刚刚编辑了这篇文章,以包含我修改后的代码.这么多菜鸟错误!

       $date  = $_POST['date'];
       $venue = $_POST['venue'];
       $time  = $_POST['time'];

   if (!empty($date) && !empty($venue) && !empty($time)){

    try{
        $query = $connect->prepare("INSERT INTO gigs (date, venue, time) VALUES (:date, :venue, :time)");
        $query->bindParam(':date' , $date);
        $query->bindParam(':venue' , $venue);
        $query->bindParam(':time' , $time);
        $query->execute(); 

       }

     catch(PDOException $e)
       {
       handle_sql_errors($query, $e->getMessage());
       }
  }
Run Code Online (Sandbox Code Playgroud)

}

这是我的html表单

  <form>
  <label>date</label><br><input type="text" name="date"><br>
  <label>venue</label><br><input type="text" name="venue"><br>
  <label>time</label><br><input type="text" name="time"><br>
  <br>
  <button type="submit" value="addGig" name="addGig">add gig</button>
  </form>
Run Code Online (Sandbox Code Playgroud)

Mar*_*c B 5

您有ZERO错误处理,并且只是假设您的准备永远不会失败.如果你有错误处理,你会被告知你的语法错误:

INSERT INTO gigs ('date', 'venue', 'time') 
                  ^----^--^-----^--^----^----
Run Code Online (Sandbox Code Playgroud)

你使用了不正确的引号.'将事物变成字符串文字.您不能在MySQL中使用字符串文字作为标识符.标识符(表/字段名称)必须是单词,或者用反引号引用.由于您的字段名称都不是保留字,因此不需要反引号.但是以下任何一种都是可以接受的

INSERT INTO gigs (`date`, `venue`, `time`) 
INSERT INTO gigs (date, venue, time) 
Run Code Online (Sandbox Code Playgroud)