Why can't I insert a data inside my database?

So Newbie right here…
I don’t know why and what are the data are not inserting to my database.
My first SQL code runs and it checks if there are other same username but next SQL it is not inserting. I don’t know why.
My form is here…

<form class="form-horizontal" action="register.php" method="POST">
	<h3 class="text-center">Create an Account</h3>
	<div class="form-group">
		<label for="company" class="col-sm-3 control-label">* Username:</label>
		<div class="col-sm-7">
			<input type="text" name="username" class="form-control" placeholder="Username">
		</div>
	<div class="col-sm-2 visible-md-block visible-lg-block"></div>
	</div>
	<div class="form-group">
		<label for="company" class="col-sm-3 control-label">* Password:</label>
		<div class="col-sm-7">
		     <input type="password" name="password" class="form-control" placeholder="Password">
		</div>
		<div class="col-sm-2 visible-md-block visible-lg-block"></div>
	</div>
	<hr>
            <div class="form-group">
		<h3 class="text-center">Please fill out the form</h3>
              <label for="fname" class="col-sm-3 control-label">* First Name:</label>
              <div class="col-sm-7">
                <input type="text" name="fname" class="form-control" placeholder="First Name">
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <div class="form-group">
              <label for="mname" class="col-sm-3 control-label">* Middle Name:</label>
              <div class="col-sm-7">
                <input type="text" name="mname" class="form-control" placeholder="Middle Name">
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <div class="form-group">
              <label for="lname" class="col-sm-3 control-label">* Last Name:</label>
              <div class="col-sm-7">
                <input type="text" name="lname" class="form-control" placeholder="Last Name">
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <div class="form-group">
              <label for="company" class="col-sm-3 control-label">Company:</label>
              <div class="col-sm-7">
                <input type="text" name="company" class="form-control" placeholder="Company Name">
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <div class="form-group">
              <label for="email" class="col-sm-3 control-label">* Email Address:</label>
              <div class="col-sm-7">
                <input type="email" name="email" class="form-control" placeholder="Email Address">
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <div class="form-group">
              <label for="contact" class="col-sm-3 control-label">* Contact Number:</label>
              <div class="col-sm-7">
                <input type="tel" name="contact" class="form-control" placeholder="Contact #">
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <div class="form-group">
              <label for="haddress" class="col-sm-3 control-label">* Home Address:</label>
              <div class="col-sm-7">
                <textarea class="form-control" name="haddress" rows="3" placeholder="Insert your local address that you live"></textarea>
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <div class="form-group">
              <label for="dob" class="col-sm-3 control-label">* Date of Birth:</label>
              <div class="col-sm-7">
			<div class="col-sm-4 col-xs-4">
				<select class="form-control" name="year">
					<?php
						$yearstart = date("Y");
						$yearend = 1928;
						$years = range($yearstart,$yearend);
						foreach ($years as $year) {
							echo "<option>".$year."</option>";
						}
					?>
				</select>
			</div>
			<div class="col-sm-5 col-xs-5">
				<select class="form-control" name="month">
					<option value="01">January</option>
					<option value="02">Febraury</option>
					<option value="03">March</option>
					<option value="04">April</option>
					<option value="05">May</option>
					<option value="06">June</option>
					<option value="07">July</option>
					<option value="08">August</option>
					<option value="09">September</option>
					<option value="10">October</option>
					<option value="11">November</option>
					<option value="12">December</option>
				</select>
			</div>
			<div class="col-sm-3 col-xs-3">
				<select class="form-control" name="day">
					<?php
						$daystart = 1;
						$dayend = 31;
						$days = range($daystart,$dayend);
						foreach ($days as $day) {
			         			echo "<option>".$day."</option>";
						}
					?>
				</select>
			</div>
              </div>
              <div class="col-sm-2 visible-md-block visible-lg-block"></div>
            </div>
            <br>
	    <input type="submit" id="buttontype" class="btn btn-lg btn-block" name="submit" value="Confirm Reservation" style="font-size:36px;">

          </form>

My php codes is here and just ignore the session.

<?php
if (!isset($_POST['submit'])) {
  header("Location: step5.php?register=error");
}
else{
  session_start();
  print_r ($_POST);

  include_once 'conn.php';
  $username = mysqli_real_escape_string($conn, $_POST['username']);
  $password = mysqli_real_escape_string($conn, $_POST['password']);
  $fname = mysqli_real_escape_string($conn, $_POST['fname']);
  $mname = mysqli_real_escape_string($conn, $_POST['mname']);
  $lname = mysqli_real_escape_string($conn, $_POST['lname']);
  $company = mysqli_real_escape_string($conn, $_POST['company']);
  $email = mysqli_real_escape_string($conn, $_POST['email']);
  $contact = mysqli_real_escape_string($conn, $_POST['contact']);
  $haddress = mysqli_real_escape_string($conn, $_POST['haddress']);

  //DATE of Birth
  $byear = $_POST['year'];
  $bmonth = $_POST['month'];
  $bday = $_POST['day'];
  $birthday = $byear."/".$bmonth."/".$bday;
  $dob = date("Y/m/d", strtotime($birthday));

  $eid = $_SESSION["id"];
  $edate = $_SESSION["datevent"];
  $event = $_SESSION["event"];
  $etime = $_SESSION["time"];
  $epackage = $_SESSION["package"];
  $emenu = $_SESSION["menu"];
  $emotif = $_SESSION["motif"];
  $evenue = $_SESSION["venue"];
  $evenueaddress = $_SESSION["venueaddress"];
  $epax = $_SESSION["pax"];

  $beef = $_SESSION["beef"];
  $pork = $_SESSION["pork"];
  $seafood = $_SESSION["seafood"];
  $chicken = $_SESSION["chicken"];
  $vegetable = $_SESSION["vegetable"];
  $drinks = $_SESSION["drinks"];
  $pasta = $_SESSION["pasta"];
  $pasta = $_SESSION["pasta"];

  if (!empty($username)||!empty($password)||!empty($fname)||!empty($mname)||!empty($lname)||!empty($company)||!empty($email)||!empty($contact)||!empty($haddress)) {
    if (!preg_match("/^[a-z0-9A-Z]*$/",$username) || !preg_match("/^[a-z0-9A-Z]*$/",$password) ||!preg_match("/^[a-zA-Z]*$/",$fname) || !preg_match("/^[a-zA-Z]*$/",$mname) || !preg_match("/^[a-zA-Z]*$/",$lname)) {
      header("Location: step5.php?register=invalid");
      exit();
    }
    else {
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          header("Location: step5.php?register=invalidemail");
          exit();
      }
      else{
        $sql = $conn->prepare("SELECT * FROM table_customer WHERE username=?");
        $sql->bind_param("s",$username);
        $sql->execute();
        $result = $sql->get_result();

        if ($result->num_rows>0) {
          header("Location: step5.php?register=usertaken");
          exit();
        }
        else{
          $hashpwd = password_hash($password, PASSWORD_DEFAULT);
          //1st SQL
          $sql1 = $conn->prepare("INSERT INTO `table_customer`(CUS_FNAME,CUS_MNAME,CUST_LNAME,CUST_COMPANY,CUST_EMAIL,CUST_CONTACTNUM,CUST_ADDRESS,CUST_DOB,username,password)VALUES(?,?,?,?,?,?,?,?,?,?)");
          $sql1->bind_param('sssssissss',$fname,$mname,$lname,$company,$email,$contact,$haddress,$dob,$username,$hashpwd);
		      $sql1->execute();
        }
        $sql->close();
      }
    }
  }
  else {
    header("Location: step5.php?register=empty");
    exit();
  }
}

?>

my database

Pls. Kindly help me.

Start by adding error_reporting(E_ALL); to the top of your php file. Hopefully you will get some useful error messages.

Next, add a die(‘got here’) right before the insert statement. This will verify that the code is actually being reached. I assume things like CUS_FNAME are defined somewhere.

And while not directly on topic you can simplify your code by eliminating many of your else clauses following the exist statements.

if (something) {
    exit();
}
else {
    // continue
}

Can be replaced by

if (something) {
    exit();
}
// continue

Much easier to read.

And get rid of all these calls: mysqli_real_escape_string. Using prepared statements makes this function irrelevant.

1 Like

OH! Thank you for the tips. NOTED.
Well, the insert statement is running. Got no errors.
But when I look at my database, there is no inserted data.

Hmmm.

Change INSERT INTO table_customer to INSERT INTO table_customerXXX

If that does not throw an error then either your code is not being executed and or you have something swallowing the error messages and/or exceptions.

what does this mean? I do not see you asking for errors anywhere. Look for mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

1 Like

You need to check each condition, if it resolves as expected.

Note: the easier way were to put a UNIQUE constraint on username and check if the insertion succeeds.

turn up error reporting. the session does not fail without a message.

even worse mysqli_real_escape_string() modifies the inserted data.

Thank you Sir, You save me! I got an error supposedly earlier but thanks to your notes that I got the error and the problem is password.
Because the password in the database has a limit of 25characters so the hashed password doesn’t go in.
WELL! Thank you! Thank you! you save me a lot of time!

Thank you. NOTED!
I just forgot that prepared statement prevents SQL injection.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.