0

As the title said, I cannot insert a contact form (using Bootstrap) into MySQL (I'm using mysqli). Below is my php script:

<?php
    $conn = mysqli_connect('localhost', 'root', 'mypassword', 'mydbname');
    
    if (!$conn) {
     echo "Error: Unable to connect to MySQL." . PHP_EOL;
     echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
     echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
     exit;
    }

    if(isset($_POST['submit'])){
        $sql = mysqli_query($conn, "INSERT INTO `contacts` (`firstName`, `lastName`, `dayOfBirth`, `phone`, `gender`, `email`) VALUES('".$_POST['firstName']."', '".$_POST['lastName']."', '".$_POST['birthday']."', '".$_POST['phone']."', '', '".$_POST['email']."')");
    }
    
    mysqli_close($conn);
?>

And below is my contact form using bootstrap:

<div class="container">
  <div class="row">
<h2>Contact Form</h2>
<form class="form-horizontal" method="POST">
      <div class="form-group">
        <label class="control-label col-xs-2">First Name:</label>
        <div class="col-xs-10">
          <input type="text" class="form-control" name="firstName" placeholder="First Name">
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Last Name:</label>
        <div class="col-xs-10">
          <input type="text" class="form-control" name="lastName" placeholder="Last Name">
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">DoB:</label>
        <div class="col-sm-6 col-md-2">
          <div class="input-group date" id="birthday">
        <input type="text" class="form-control" name="birthday">
        <span class="input-group-addon"> <span class="glyphicon glyphicon-calendar"></span> </span> </div>
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Phone/Mobile:</label>
        <div class="col-xs-10">
          <input type="text" class="form-control" name="phone" placeholder="Phone/Mobile">
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Gender:</label>
        <div class="col-xs-10">
          <label class="radio-inline">
        <input type="radio" name="gender" value="M">
        Male</label>
          <label class="radio-inline">
        <input type="radio" name="gender" value="F">
        Female</label>
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Email:</label>
        <div class="col-xs-10">
          <input type="email" class="form-control" name="email" placeholder="Email">
        </div>
  </div>
      <div class="form-group">
      <div class="col-xs-offset-2 col-xs-10">
          <button type="submit" class="btn btn-primary" name="submit" value="Submit">Submit</button>
      </div>
  </div>
    </form>
  </div>
</div>

It seems like $conn have no problem, I can connect to database without error, but the query may have problem. When I submit, no data is inserted into the database, however, it does not show error.

Also, if needed, all columns in db are allowed NULL, I also have 1 colum named id (which is auto_increment), and to remind, I want to insert into phpmyadmin, not mysql. Can anyone help me to find out what's problem?

P/s: I'm using wampserver, if it does matter.

P/s 2: FOUND the error!!!

Community
  • 1
  • 1
Shizuka
  • 26
  • 3
  • 1
    phpMyAdmin is a web interface into MySQL - so the insert is a MySQL statement and will put the data in the database, where you can look at it with phpMyAdmin. Try running the statement in the phpMyAdmin interface to see if it works there. – user2182349 Dec 01 '15 at 02:46
  • Rather than guessing the problem you can check for the result of `mysqli_query()` and display an error using `mysqli_error()`. You are also wide open to injection attacks. See http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php/60496#60496 – Tristan Dec 01 '15 at 02:50
  • @user2182349: Yes, I used insert SQL query in phpmyadmin inferface, and it can add data into the db normally, but not work when I used the form. Tristan: I'm not using a real server, so temporary do not care about validation or attacks. – Shizuka Dec 01 '15 at 02:53
  • 1
    Damm it, I found the error, just because of a typing fault, I named a column in db 'fistName', not 'firstName'... How stupid it is, anyway, thank you guys very much ^^ – Shizuka Dec 01 '15 at 03:07

2 Answers2

0

Make sure you are really connected to your database. Then add the action attribute into your bootstrap form.

<form class="form-horizontal" action="page where insert code happens" method="POST">
claudios
  • 6,588
  • 8
  • 47
  • 90
0

You have made some syntax errors in your query code.. Try this..Works !!

Also, please note that you are inserting into MYSQL and it is part of the WAMP or XAMP stack. PHPMYADMIN is administration part for managing databases.

<?php
    $conn = mysqli_connect('localhost', 'root', '', 'db_sandbox');

    if (!$conn) {
     echo "Error: Unable to connect to MySQL." . PHP_EOL;
     echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
     echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
     exit;
    }

    if(isset($_POST['submit'])){
        $firsname = $_POST['firstName'];
        $lastName = $_POST['lastName'];
        $birthday = $_POST['birthday'];
        $phone = $_POST['phone'];
        $gender = $_POST['gender'];
        $email = $_POST['email'];

        $query = "INSERT INTO contacts (firstName, lastName, dayOfBirth, phone, gender, email) VALUES('".$firsname."', '".$lastName."', ".$birthday.", ".$phone.", '".$gender."', '".$email."')";
        $sql = mysqli_query($conn, $query);


    }

    mysqli_close($conn);
?>

<div class="container">
  <div class="row">
<h2>Contact Form</h2>
<form class="form-horizontal" method="POST" action="index.php">
      <div class="form-group">
        <label class="control-label col-xs-2">First Name:</label>
        <div class="col-xs-10">
          <input type="text" class="form-control" name="firstName" placeholder="First Name">
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Last Name:</label>
        <div class="col-xs-10">
          <input type="text" class="form-control" name="lastName" placeholder="Last Name">
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">DoB:</label>
        <div class="col-sm-6 col-md-2">
          <div class="input-group date" id="birthday">
        <input type="text" class="form-control" name="birthday">
        <span class="input-group-addon"> <span class="glyphicon glyphicon-calendar"></span> </span> </div>
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Phone/Mobile:</label>
        <div class="col-xs-10">
          <input type="text" class="form-control" name="phone" placeholder="Phone/Mobile">
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Gender:</label>
        <div class="col-xs-10">
          <label class="radio-inline">
        <input type="radio" name="gender" value="M">
        Male</label>
          <label class="radio-inline">
        <input type="radio" name="gender" value="F">
        Female</label>
        </div>
  </div>
      <div class="form-group">
        <label class="control-label col-xs-2">Email:</label>
        <div class="col-xs-10">
          <input type="email" class="form-control" name="email" placeholder="Email">
        </div>
  </div>
      <div class="form-group">
      <div class="col-xs-offset-2 col-xs-10">
          <button type="submit" class="btn btn-primary" name="submit" value="Submit">Submit</button>
      </div>
  </div>
    </form>
  </div>
</div>
DpEN
  • 4,216
  • 3
  • 17
  • 26