Jump to content

Why isn't my form inserting data into MySQL database?


Jazza

Recommended Posts

Hi

 

I am having trouble inserting data into my MySQL database.

This is my PHP code

ini_set('display_errors', 1);
	ini_set('display_startup_errors', 1);
	error_reporting(E_ALL);
static $connection;
	if(!isset($connection)) {
		$connection = new mysqli("localhost","username","password");
	}
	if ($connection->connect_error) {
	    die("Connection failed: " . $connection->connect_error);
	}
	
	$stmt = $connection->prepare("INSERT into Product(product_title,product_price,product_availability,productImage_1,productImage_2,productImage_3,productImage_4,product_description,product_shipping,product_pickup) VALUES(?,?,?,?,?,?,?,?,?,?)");
	$product_title = $_POST['title'];
	$product_price = $_POST['price'];
	$product_availability = $_POST['stock'];

	$null = NULL;

	$product_description = $_POST['description'];
	$product_shipping = $_POST['postage'];
	$product_pickup = $_POST['pickup'];
	
	$stmt->bind_param('sisbbbbsis',$product_title,$product_price,$product_availability,$null,$null,$null,$null,$product_description,$product_shipping,$product_pickup);
	
	$stmt->send_long_data(3, file_get_contents($_FILES['img1']['tmp_name']));
	$stmt->send_long_data(4, file_get_contents($_FILES['img2']['tmp_name']));
	$stmt->send_long_data(5, file_get_contents($_FILES['img3']['tmp_name']));
	$stmt->send_long_data(6, file_get_contents($_FILES['img4']['tmp_name']));
	
	$stmt->execute();
	
	$stmt->close();
	$connection->close();
	
	echo "Product inserted successfully";

I am also getting these errors.

Notice: Undefined index: title in /Applications/MAMP/htdocs/Bourke/insertproduct.php on line 61

Notice: Undefined index: price in /Applications/MAMP/htdocs/Bourke/insertproduct.php on line 62

Notice: Undefined index: stock in /Applications/MAMP/htdocs/Bourke/insertproduct.php on line 63

Notice: Undefined index: description in /Applications/MAMP/htdocs/Bourke/insertproduct.php on line 67

Notice: Undefined index: postage in /Applications/MAMP/htdocs/Bourke/insertproduct.php on line 68

Notice: Undefined index: pickup in /Applications/MAMP/htdocs/Bourke/insertproduct.php on line 69

Fatal error: Call to a member function bind_param() on boolean in /Applications/MAMP/htdocs/Bourke/insertproduct.php on line 71

Thanks in advance.

Edited by Jazza
Link to comment
Share on other sites

The $_POST index names 'title', 'price', 'stock' etc do not exist at all, so referencing them give you undefined error and so no values will be retrieved.

Hi, thanks for the reply.

 

I forgot to add the HTML form.

<html>
	<head>


	</head>


	<body>
		<form action="insertproduct.php" method="POST" enctype="multipart/form-data">
			Title<input type="text" name="title"><br><br>
			Product Price<input type="number" name="price"><br><br>
			Stock remaining
			<select name="stock" id="stock">
				<option value="in stock">In stock</option>
				<option value="almost out">Almost out</option>
				<option value="out of stock">Out of stock</option>
			</select><br><br>
			Select image 1: <input type="file" name="img1" multiple><br><br>
			Select image 2: <input type="file" name="img2" multiple><br><br>
			Select image 3: <input type="file" name="img3" multiple><br><br>
			Select image 4: <input type="file" name="img4" multiple><br><br>
			<hr>
			Product Description:<br><br><textarea rows="10" cols="100" name="description">
			</textarea><br><br>
			<hr>
			Shipping Price($)<input type="number" name="postage"><br><br>
			Instore Pickup available? 
				<input type="radio" name="pickup" value="yes" id="yes" checked> Yes
				<input type="radio" name="pickup" value="no" id="no"> No
				<br><br>
				
			<input type="submit" value="submit">
		</form>
	</body>
</html>
Link to comment
Share on other sites

The original post still represent what will happen if $_POST index names do not exist, that you are referencing. This will happen if you go directly to the php page, without going from the form html page, the form is not submitted so $_POST Indexes and values do not exist. You should first check if these indexs are set (isset()) and assign these values to a predefined variable, then no such error will appear.

  • Like 1
Link to comment
Share on other sites

Hi

Thanks again for the reply.

 

So if I use the form, instead of just entering the php code script in the browser, those errors will not be displayed?

 

The data is not going into the database though.

 

Thanks

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...