I am using bind_param
to update data in my SQL database. When all fields are filled, the form submits successfully but if any field is left blank the database doesn't updates. I don't know what's wrong with my code.
Here is my html form
<form id="msform" action="includes/cand-reg-dbs.php" method="POST">
<label>Your Full Name</label>
<input type="text" name="full-name"><br />
<label>Your Date of Birth</label>
<input type="date" name="dob"><br />
<label>Father's Name</label>
<input type="text" name="f-name"><br />
<label>Mother's Name</label>
<input type="text" name="m-name"><br />
<label>Address</label>
<input type="text" name="address"><br />
<label>City</label>
<input type="text" name="city"><br />
<label>Pincode</label>
<input type="text" name="pincode"><br />
<input type="submit" name="submit" id="submit-button" class="" value="Save" /></form>
Here is the action of the above form cand-reg-dbs.php
session_start();
if (isset($_POST['submit'])) {
$dbServername = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "jobin";
$uid = $_SESSION['username'];
$con = new mysqli($dbServername, $dbUsername, $dbPassword, $dbName);
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
$stmt = $con->prepare("UPDATE users SET Full_Name = ?, DOB = ?, f_Name = ?, m_Name= ?, Address = ?, City = ?, Pincode = ? WHERE Username = ?");
$stmt->bind_param("ssssssis", $fullName, $dob, $fName, $mName, $address, $city, $pincode, $uid);
$fullName = $_POST['full-name'];
$dob = $_POST['dob'];
$fName = $_POST['f-name'];
$mName = $_POST['m-name'];
$address = $_POST['address'];
$city = $_POST['city'];
$pincode = $_POST['pincode'];
echo "New records created successfully";
$stmt->execute();
$stmt->close();
$con->close();
}
In the users table the default value are-
Full_Name VARCHAR(40) default value is set to ''
DOB date default value is set to 12-12-2012
f_Name VARCHAR(40) default value is set to ''
m_Name VARCHAR(40) default value is set to ''
Address VARCHAR(120) default value is set to ''
City VARCHAR(25) default value is set to ''
Pincode int(6) default value is set to 0