Reputation: 33
On submit, records are being inserted into MySQL database but 4 extra blank rows are being inserted too. The blank rows in phpmyadmin have only the "id" but the other columns in the table are empty/blank. I am attaching my code below. Your help is appreciated.
<!DOCTYPE html>
<head>
<title>Title</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
<style type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Page Title</title>
<style type="text/css" charset="utf-8"/>
*{background:#eee;padding:2px;box-sizing:border-box;
-moz-box-sizing:border-box; /* Firefox */}
</style>
</head>
<body>
<?php
$dbhost = 'host';
$dbuser = 'user';
$dbpass = 'passw';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
//test if the connection is established successfully then it will proceed in next process else it will throw an error message
if (!$conn) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('cato'); //we specify here the Database name we are using
if (isset($_POST['submit'])) {
$i = 0;
foreach ($_POST as $val) {
$business_name = trim(mysql_real_escape_string($_POST["business_name"][$i]));
$business_type = trim(mysql_real_escape_string($_POST["business_type"][$i]));
$country = trim(mysql_real_escape_string($_POST["country"][$i]));
$province = trim(mysql_real_escape_string($_POST["province"][$i]));
$address = trim(mysql_real_escape_string($_POST["address"][$i]));
$postcode = trim(mysql_real_escape_string($_POST["postcode"][$i]));
$telephone1 = trim(mysql_real_escape_string($_POST["telephone1"][$i]));
$telephone2 = trim(mysql_real_escape_string($_POST["telephone2"][$i]));
$category = trim(mysql_real_escape_string($_POST["category"][$i]));
$email = trim(mysql_real_escape_string($_POST["email"][$i]));
$i++;
mysql_query("SET NAMES 'utf8'");
mysql_query("INSERT INTO company_details (company_id, business_name, business_type, country, province, address, postcode, telephone1, telephone2, category, email) VALUES ('','$business_name', '$business_type', '$country', '$province', '$address', '$postcode', '$telephone1', '$telephone2', '$category', '$email')");
}
}
?>
<script type="text/javascript">
alert("Successs!! records have been added to database");
window.location = "index.php?db=cato";
</script>
<?php
//close of connection
mysql_close($conn);
?>
</body>
</html>
Upvotes: 0
Views: 172
Reputation: 3427
Remove for loop from your code,
if (isset($_POST['submit'])) {
$business_name = trim(mysql_real_escape_string($_POST["business_name"][$i]));
$business_type = trim(mysql_real_escape_string($_POST["business_type"][$i]));
$country = trim(mysql_real_escape_string($_POST["country"][$i]));
$province = trim(mysql_real_escape_string($_POST["province"][$i]));
$address = trim(mysql_real_escape_string($_POST["address"][$i]));
$postcode = trim(mysql_real_escape_string($_POST["postcode"][$i]));
$telephone1 = trim(mysql_real_escape_string($_POST["telephone1"][$i]));
$telephone2 = trim(mysql_real_escape_string($_POST["telephone2"][$i]));
$category = trim(mysql_real_escape_string($_POST["category"][$i]));
$email = trim(mysql_real_escape_string($_POST["email"][$i]));
mysql_query("SET NAMES 'utf8'");
mysql_query("INSERT INTO company_details (company_id, business_name, business_type, country, province, address, postcode, telephone1, telephone2, category, email) VALUES ('','$business_name', '$business_type', '$country', '$province', '$address', '$postcode', '$telephone1', '$telephone2', '$category', '$email')");
}
?>
Upvotes: 0
Reputation: 1758
your problem is f in
foreach ($_POST as $val)
it not suppose to be there at all (you are trying to execute query for each field)
and use
($_POST["business_name"]) instead of ($_POST["business_name"][$i])
Upvotes: 0
Reputation: 44874
Use the following assuming that the HTML field names are same as in the POST
if (isset($_POST['submit'])) {
$business_name = trim(mysql_real_escape_string($_POST["business_name"]));
$business_type = trim(mysql_real_escape_string($_POST["business_type"]));
$country = trim(mysql_real_escape_string($_POST["country"]));
$province = trim(mysql_real_escape_string($_POST["province"]));
$address = trim(mysql_real_escape_string($_POST["address"]));
$postcode = trim(mysql_real_escape_string($_POST["postcode"]));
$telephone1 = trim(mysql_real_escape_string($_POST["telephone1"]));
$telephone2 = trim(mysql_real_escape_string($_POST["telephone2"]));
$category = trim(mysql_real_escape_string($_POST["category"]));
$email = trim(mysql_real_escape_string($_POST["email"]));
}
Then use the insert query. In other words take out forach $_POST
Upvotes: 1