qlmoffat
qlmoffat

Reputation: 13

PHP / Mysqli Insert Statement isn't writing to database

My problem is my PHP insert code is not writing to the database -- I feel it will be a small error with the HTML form below but I cannot place it.

HTML form (sorry for indenting)

<form method='post' action='form.php'>
          <div class='form-group'>  
            <input type='email' class='form-control' id='email' placeholder='Email : [email protected]'>
          </div>
          <div class='form-group'>  
            <input type='text' class='form-control' id='name' placeholder='Name : Joe Bloggs'>
          </div>
          <div class='form-group'>
            <input type='textarea' class='form-control' id='message' placeholder='Message : Hey, can you do this job?'>
          </div>
                <button type='submit' class='btn btn-default'>Submit</button>
                </form>

Below is my "form.php" code I am using to send data to the database.

<?php
//PHP Opened

// Insert Data
$username = "username";
$password = "password";
$dbname = "dbname" ;

// Create connection
$con=mysqli_connect("localhost",$username,$password,$dbname);

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

// From Form 
$email = isset($_POST['email']) ? $_POST['email'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$message = isset($_POST['message']) ? $_POST['message'] : '';

echo '<p>'.$email.'</p>';

$sql="INSERT INTO comment (id, email, name, message)VALUES(null,.$email.,.$name.,.$message.)";

$result = (mysqli_query($con,$sql));

  if (false === $result){
    echo 'failed';
  }
  else{
    echo 'Record added';
  }

mysqli_close($con)
//Close PHP
?>

Upvotes: 1

Views: 151

Answers (1)

codez
codez

Reputation: 1532

It is because you did not define an name attribute for those tags.

New HTML code:

<form method='post' action='form.php'>
          <div class='form-group'>  
            <input type='email' name='email' class='form-control' id='email' placeholder='Email : [email protected]'>
          </div>
          <div class='form-group'>  
            <input type='text' name='name' class='form-control' id='name' placeholder='Name : Joe Bloggs'>
          </div>
          <div class='form-group'>
            <input type='textarea' name='message' class='form-control' id='message' placeholder='Message : Hey, can you do this job?'>
          </div>
                <button type='submit' name='post' class='btn btn-default'>Submit</button>
                </form>

Also, you need a bit of fixing in PHP:

<?php
//PHP Opened

// Insert Data
$username = "username";
$password = "password";
$dbname = "dbname" ;

// Create connection
$con=mysqli_connect("localhost",$username,$password,$dbname);

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

// From Form 
if(isset($_POST['post'])) {
    $email = isset($_POST['email']) ? $_POST['email'] : '';
    $name = isset($_POST['name']) ? $_POST['name'] : '';
    $message = isset($_POST['message']) ? $_POST['message'] : '';

    echo '<p>'.$email.'</p>';

    $sql = "INSERT INTO comment (id, email, name, message) VALUES(null, " . $email . " , " . $name . ", " . $message . ")";

$result = (mysqli_query($con,$sql));

  if (false === $result){
    echo 'failed';
  }
  else{
    echo 'Record added';
  }

}
mysqli_close($con)
//Close PHP
?>

Upvotes: 1

Related Questions