Jump to content

Fatal error : Integrity constraint violation


Go to solution Solved by nadiam,

Recommended Posts

hello. i got this error and i have no idea why or what is going on. could someone explain in layman's term please and help me out.

 

 

 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'event_id' cannot be null' in /home/dhsbnet/public_html/ems/add_guest.php:36 Stack trace: #0 /home/dhsbnet/public_html/ems/add_guest.php(36): PDOStatement->execute() #1 {main} thrown in /home/dhsbnet/public_html/ems/add_guest.php on line 36

 

code being referred to, line 36 is $guests->execute() :

if(isset($_SESSION['sess_user_id']))
{
  if(isset($_POST['save']))
  {
    require "connection.php";
    $name = $_POST['guest-name'];
    $event = $_POST['event'];
    $session = $_SESSION['sess_user_id'];
    $status = "";
    $status .= "0";
    $guests = $dbh->prepare("INSERT INTO guest(guser_id,guest_name,event_id,status) VALUES (?,?,?,?)");
    for($i = 0; $i < count($_POST['guest-name']); $i++)
    {
      if(trim($_POST['guest-name'][$i]) !== '')
      {
        $guests->bindParam(1, $session, PDO::PARAM_INT);
        $guests->bindParam(2, $name[$i], PDO::PARAM_STR);
        $guests->bindParam(3, $event, PDO::PARAM_INT);
        $guests->bindParam(4, $status, PDO::PARAM_INT);
        $guests->execute();
        if($guests->rowCount() > 0)
        {
          echo "<script>window.location.href = 'guest_list.php';</script>";
        } 
      }
    }
  }
}
<div class="dropdown">
    <label>Event : <label/>
    <select name="event" id="dd-event" required>
      <option value="0" selected>Event</option>
      <?php foreach($retrieve as $r): ?>
      <option value="<?=$r['event_id']?>"><?=$r['event_name']?></option>
      <?php endforeach ?>
    </select>
  </div>

in db event_id column is int, not null, not auto incremented. TIA!

the $event variable is apparently a null value. what debugging have you done to find out what is in $event?

 

also, your table definition doesn't make sense. an auto-increment column is by design supposed to be for the database engine to assign values for, not for you to insert your own values.

 

p.s. see my reply in your other thread concerning using the bindParam() statements in the wrong place in the code.

event_id is NOT auto incremented.  It still stands that the event_id is passing NULL value. You also shouldn't need to re-bind any values except the $name value.  That is all that should be in the loop.  Maybe a:

echo '<pre>' . print_r($_POST,true) . '</pre>';
This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.