简体   繁体   中英

Insert into sql table with php from html form

I am trying to insert into my table (courses) in my sql database. But when I run my code (by clicking submit) I get this error:

I am no longer getting an error, I get the message:

New course created successfully

But when I check the database, the course has not been added

This is my code:

<?php

if (isset($_POST['submit'])) {
    try  {

        require "../config.php";
        require "../common.php";
        $connection = new PDO($dsn, $username, $password);
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO course (courseName, cDescription, programID, programYear, credit) 
                VALUES (:courseName, :cDescription, :programID, :programYear, :credit)";

        $courseName = $_POST['courseName'];
        $cDescription = $_POST['cDescription'];
        $programID = $_POST['programID'];
        $programYear = $_POST['programYear'];
        $credit = $_POST['credit'];

        $statement = $connection->prepare($sql);

        $statement->bindParam(':courseName', $courseName, PDO::PARAM_STR);
        $statement->bindParam(':cDescription', $cDescription, PDO::PARAM_STR);
        $statement->bindParam(':programID', $programID, PDO::PARAM_STR);
        $statement->bindParam(':programYear', $programYear, PDO::PARAM_STR);
        $statement->bindParam(':credit', $credit, PDO::PARAM_STR);

        $connection->exec($statement);

        echo "New course created successfully";


    } catch(PDOException $error) {
        echo $statement. "<br>" . $error->getMessage();
    }
}

?>

<?php include "templates/header.php"; ?>

<h2>Add a course</h2>

    <form method="post">
            <label for="courseName">Course Name:</label>
            <input type="text" name="courseName" id="courseName" required>
            <label for="cDescription">Course Description:</label>
            <input type="text" name="cDescription" id="cDescription" size="40" required>
            <label for="programID">Program ID:</label>
            <input type="number" name="programID" id="programID" required>
            <label for="programYear">Program Year:</label>
            <input type="number" name="programYear" id="programYear" required>
            <label for="credit">credit:</label>
            <input type="number" name="credit" id="credit" required>

            <input type="submit" name="submit" value="Submit">
    </form>

    <a href="index.php">Back to home</a>

    <?php include "templates/footer.php"; ?>

To try and see what was wrong, I tried simplifying this to, which works

<?php

if (isset($_POST['submit'])) {
  $servername = "localhost";
  $username = "username";
  $password = "password";
  $dbname = "courseselector";

  try {
      $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
      // set the PDO error mode to exception
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $sql = "INSERT INTO course (courseName, cDescription, programID, programYear, credit) 
      VALUES ('courseName', 'cDescription', 1, 4, 1)";
      // use exec() because no results are returned
      $conn->exec($sql);
      echo "New record created successfully";
      }
  catch(PDOException $e)
      {
      echo $sql . "<br>" . $e->getMessage();
      }

  $conn = null;

}

?>

<?php include "templates/header.php"; ?>

<h2>Add a course</h2>

    <form method="post">          
            <input type="submit" name="submit" value="Submit">
    </form>

    <a href="index.php">Back to home</a>

    <?php include "templates/footer.php"; ?>

I was missing

$statement->execute();

Above

$connection->exec($statement);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM