Michael St Clair
Michael St Clair

Reputation: 6625

Insert Into with PDO not working

I've been trying to get this to work for the last hour. I've checked all links and that the right table is being referenced. I removed the if statement from documents.php and checked, but nothing is inserting the data in to the table. I also checked the error log and I am not receiving any errors.

index.php

<div class="content">
<?php if (Session::get('user_logged_in') == true AND $admin == 1):?>
<form action="../processes/documents.php" method="post" class="pure-form pure-form-aligned">
    <legend>Add Document</legend>
      <fieldset>
        <div class="pure-control-group">
              <input type="text" name="documentnumber" placeholder="Document Number">
              </div>                                
              <div class="pure-control-group">  
              <input type="text" name="documentdate" placeholder="Document Date">
              </div>
              <div class="pure-control-group">
              <input type="text" name="expirationdate" placeholder="Document Expiration Date">  
              </div>
              <div class="pure-control-group">  
              <input type="text" name="description" placeholder="Description">
              </div>                            
              <div class="pure-control-group">  
              <select name="artistname">
                  <?php
                      $con=mysqli_connect("$hostname","$username","$password","saintfiv_artists");
                      if (mysqli_connect_errno($con))
                        {
                        echo "Failed to connect to MySQL: " . mysqli_connect_error();
                        }

                      $result2 = mysqli_query($con,"SELECT * FROM artists ORDER BY `artistname`");

                       while($row2 = mysqli_fetch_array($result2))
                        {
                        echo '<option value="' . $row2['artistname'] . '">' . $row2['artistname'] . '</option>';
                        }
                    ?>
              </select>
              </div>
              <div class="pure-control-group">
              <select name="artwork">';
                  <?php
                      $dir    = '../documents/';
                      $files = scandir($dir);
                      foreach ($files as $filename) {
                          if ($filename != '.' AND $filename != ".."){
                          echo "<option value='" . $filename . "'>".$filename."</option>";
                          }
                      }
                  ?>
              </select> 
              </div>                            
              <div class="pure-control-group">              
              <button type="submit" name="adddocument" class="pure-button pure-button-primary">Add</button>
              </div>
      </fieldset>
</form>
<?php endif; ?>
</div>

documents.php

<?php
if (isset($_POST['adddocument'])) {
include_once('../config/mysql.php');

$document_number = $_POST['documentnumber'];
$document_date = $_POST['documentdate'];
$document_expiration_date = $_POST['expirationdate'];
$description = $_POST['description'];
$artist_name = $_POST['artistname'];
$document_name = $_POST['documentname'];

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=saintfiv_artists", $username, $password);
    $stmt = $dbh->prepare("INSERT INTO documents(`document_number`, `document_date`, `document_expiration_date`, `description`, `artist_name`, `document_name`) VALUES (:document_number, :document_date, :document_expiration_date, :description, :artist_name, :document_name)");
    $stmt->bindParam(':document_number', $document_number, PDO::PARAM_STR);
    $stmt->bindParam(':document_date', $document_date, PDO::PARAM_STR);
    $stmt->bindParam(':document_expiration_date', $document_expiration_date, PDO::PARAM_STR);
    $stmt->bindParam(':description', $description, PDO::PARAM_STR);
    $stmt->bindParam(':artist_name', $artist_name, PDO::PARAM_STR);
    $stmt->bindParam(':document_name', $document_name, PDO::PARAM_STR);
    $stmt->execute();
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
}

header("Location: http://www.saint57records.com/artistreports/documents/index");
?>

Upvotes: 0

Views: 53

Answers (1)

Funk Forty Niner
Funk Forty Niner

Reputation: 74220

"Fred, your error reporting suggestion helped me find my problem. Please add your comment as the answer. "

As requested by the OP, comment to answer to close the question.

Add:

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

right after the connection is opened.

Plus, add error reporting to the top of your file(s) right after your opening <?php tag

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

see if it yields anything, since you're not checking for potential errors.

Upvotes: 1

Related Questions