Cannot Upload an Image To Database [duplicate]
This question already has an answer here:
Why does file upload not work without the enctype property?
2 answers
How to get useful error messages in PHP?
29 answers
I have a problem where I cannot upload my image from the form to the database. The problem is that I cannot get the path of the image and the name of the image. As a result, it does not go through the if statements and does not upload to database. Any help will be appreciated.
<form action="<?php echo htmlspecialchars('register_parse.php');?>" method='post'>
<div class="avatar"><label>Upload a picture: </label><input type="file" name="avatar" accept="image/*" required></div>
</form>
And here is the register_parse.php file:
if(isset($_POST['email']) && isset($_POST['avatar'])){
$avatar_path = $mysqli->real_escape_string('img/'.$FILES['avatar']['name']);
// Check if user with that email already exists
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());
// We know user email exists if the rows returned are more than 0
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = 'User with this email already exists!';
header("location: error.php");
}
else{
if(preg_match("!image!",$_FILES['avatar']['type'])){
if(copy($_FILES['avatar']['tmp_name'], $avatar_path)){
$_SESSION['avatar']=$avatar_path;
$sql = "INSERT INTO users (email, image) VALUES ('".$email."','".$avatar_path."')";
$res = mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
if($mysqli->query($sql) === true){
$_SESSION['message'] = "Registration successful.";
header("location: success.php");
}
}
else{
$_SESSION['message'] = "User could not be added to the database.";
header("location: error.php");
}
}
else{
$_SESSION['message'] = "File upload failed";
header("location: error.php");
}
}
}
}
?>
It always goes to FILE Upload Failed. When I remove the last two if statements if(preg_match("!image!",$_FILES['avatar']['type'])) and if(copy($_FILES['avatar']['tmp_name'], $avatar_path)) , everything works, but in the database I get that the path of the image is just img/, so it cannot get the path of the image.
php html mysql file-upload
marked as duplicate by Phil
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 19 '18 at 23:30
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
Why does file upload not work without the enctype property?
2 answers
How to get useful error messages in PHP?
29 answers
I have a problem where I cannot upload my image from the form to the database. The problem is that I cannot get the path of the image and the name of the image. As a result, it does not go through the if statements and does not upload to database. Any help will be appreciated.
<form action="<?php echo htmlspecialchars('register_parse.php');?>" method='post'>
<div class="avatar"><label>Upload a picture: </label><input type="file" name="avatar" accept="image/*" required></div>
</form>
And here is the register_parse.php file:
if(isset($_POST['email']) && isset($_POST['avatar'])){
$avatar_path = $mysqli->real_escape_string('img/'.$FILES['avatar']['name']);
// Check if user with that email already exists
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());
// We know user email exists if the rows returned are more than 0
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = 'User with this email already exists!';
header("location: error.php");
}
else{
if(preg_match("!image!",$_FILES['avatar']['type'])){
if(copy($_FILES['avatar']['tmp_name'], $avatar_path)){
$_SESSION['avatar']=$avatar_path;
$sql = "INSERT INTO users (email, image) VALUES ('".$email."','".$avatar_path."')";
$res = mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
if($mysqli->query($sql) === true){
$_SESSION['message'] = "Registration successful.";
header("location: success.php");
}
}
else{
$_SESSION['message'] = "User could not be added to the database.";
header("location: error.php");
}
}
else{
$_SESSION['message'] = "File upload failed";
header("location: error.php");
}
}
}
}
?>
It always goes to FILE Upload Failed. When I remove the last two if statements if(preg_match("!image!",$_FILES['avatar']['type'])) and if(copy($_FILES['avatar']['tmp_name'], $avatar_path)) , everything works, but in the database I get that the path of the image is just img/, so it cannot get the path of the image.
php html mysql file-upload
marked as duplicate by Phil
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 19 '18 at 23:30
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
1
You have $FILES instead of $_FILES....
– Sloan Thrasher
Nov 19 '18 at 23:26
1
Does your image gets through? Normally you needmethod="post" enctype="multipart/form-data">
in your form
– Diogo Santo
Nov 19 '18 at 23:29
I added the enctype="multipart/form-data" and fixed $_FILES, but I am redirected to a complete blank page. Does anyone know why I am redirected to a blank page? When I remove the enctype="multipart/form-data" it goes again to File Upload failed.
– Kaloyan
Nov 20 '18 at 11:53
add a comment |
This question already has an answer here:
Why does file upload not work without the enctype property?
2 answers
How to get useful error messages in PHP?
29 answers
I have a problem where I cannot upload my image from the form to the database. The problem is that I cannot get the path of the image and the name of the image. As a result, it does not go through the if statements and does not upload to database. Any help will be appreciated.
<form action="<?php echo htmlspecialchars('register_parse.php');?>" method='post'>
<div class="avatar"><label>Upload a picture: </label><input type="file" name="avatar" accept="image/*" required></div>
</form>
And here is the register_parse.php file:
if(isset($_POST['email']) && isset($_POST['avatar'])){
$avatar_path = $mysqli->real_escape_string('img/'.$FILES['avatar']['name']);
// Check if user with that email already exists
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());
// We know user email exists if the rows returned are more than 0
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = 'User with this email already exists!';
header("location: error.php");
}
else{
if(preg_match("!image!",$_FILES['avatar']['type'])){
if(copy($_FILES['avatar']['tmp_name'], $avatar_path)){
$_SESSION['avatar']=$avatar_path;
$sql = "INSERT INTO users (email, image) VALUES ('".$email."','".$avatar_path."')";
$res = mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
if($mysqli->query($sql) === true){
$_SESSION['message'] = "Registration successful.";
header("location: success.php");
}
}
else{
$_SESSION['message'] = "User could not be added to the database.";
header("location: error.php");
}
}
else{
$_SESSION['message'] = "File upload failed";
header("location: error.php");
}
}
}
}
?>
It always goes to FILE Upload Failed. When I remove the last two if statements if(preg_match("!image!",$_FILES['avatar']['type'])) and if(copy($_FILES['avatar']['tmp_name'], $avatar_path)) , everything works, but in the database I get that the path of the image is just img/, so it cannot get the path of the image.
php html mysql file-upload
This question already has an answer here:
Why does file upload not work without the enctype property?
2 answers
How to get useful error messages in PHP?
29 answers
I have a problem where I cannot upload my image from the form to the database. The problem is that I cannot get the path of the image and the name of the image. As a result, it does not go through the if statements and does not upload to database. Any help will be appreciated.
<form action="<?php echo htmlspecialchars('register_parse.php');?>" method='post'>
<div class="avatar"><label>Upload a picture: </label><input type="file" name="avatar" accept="image/*" required></div>
</form>
And here is the register_parse.php file:
if(isset($_POST['email']) && isset($_POST['avatar'])){
$avatar_path = $mysqli->real_escape_string('img/'.$FILES['avatar']['name']);
// Check if user with that email already exists
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());
// We know user email exists if the rows returned are more than 0
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = 'User with this email already exists!';
header("location: error.php");
}
else{
if(preg_match("!image!",$_FILES['avatar']['type'])){
if(copy($_FILES['avatar']['tmp_name'], $avatar_path)){
$_SESSION['avatar']=$avatar_path;
$sql = "INSERT INTO users (email, image) VALUES ('".$email."','".$avatar_path."')";
$res = mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
if($mysqli->query($sql) === true){
$_SESSION['message'] = "Registration successful.";
header("location: success.php");
}
}
else{
$_SESSION['message'] = "User could not be added to the database.";
header("location: error.php");
}
}
else{
$_SESSION['message'] = "File upload failed";
header("location: error.php");
}
}
}
}
?>
It always goes to FILE Upload Failed. When I remove the last two if statements if(preg_match("!image!",$_FILES['avatar']['type'])) and if(copy($_FILES['avatar']['tmp_name'], $avatar_path)) , everything works, but in the database I get that the path of the image is just img/, so it cannot get the path of the image.
This question already has an answer here:
Why does file upload not work without the enctype property?
2 answers
How to get useful error messages in PHP?
29 answers
php html mysql file-upload
php html mysql file-upload
asked Nov 19 '18 at 23:18
KaloyanKaloyan
134
134
marked as duplicate by Phil
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 19 '18 at 23:30
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by Phil
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 19 '18 at 23:30
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
1
You have $FILES instead of $_FILES....
– Sloan Thrasher
Nov 19 '18 at 23:26
1
Does your image gets through? Normally you needmethod="post" enctype="multipart/form-data">
in your form
– Diogo Santo
Nov 19 '18 at 23:29
I added the enctype="multipart/form-data" and fixed $_FILES, but I am redirected to a complete blank page. Does anyone know why I am redirected to a blank page? When I remove the enctype="multipart/form-data" it goes again to File Upload failed.
– Kaloyan
Nov 20 '18 at 11:53
add a comment |
1
You have $FILES instead of $_FILES....
– Sloan Thrasher
Nov 19 '18 at 23:26
1
Does your image gets through? Normally you needmethod="post" enctype="multipart/form-data">
in your form
– Diogo Santo
Nov 19 '18 at 23:29
I added the enctype="multipart/form-data" and fixed $_FILES, but I am redirected to a complete blank page. Does anyone know why I am redirected to a blank page? When I remove the enctype="multipart/form-data" it goes again to File Upload failed.
– Kaloyan
Nov 20 '18 at 11:53
1
1
You have $FILES instead of $_FILES....
– Sloan Thrasher
Nov 19 '18 at 23:26
You have $FILES instead of $_FILES....
– Sloan Thrasher
Nov 19 '18 at 23:26
1
1
Does your image gets through? Normally you need
method="post" enctype="multipart/form-data">
in your form– Diogo Santo
Nov 19 '18 at 23:29
Does your image gets through? Normally you need
method="post" enctype="multipart/form-data">
in your form– Diogo Santo
Nov 19 '18 at 23:29
I added the enctype="multipart/form-data" and fixed $_FILES, but I am redirected to a complete blank page. Does anyone know why I am redirected to a blank page? When I remove the enctype="multipart/form-data" it goes again to File Upload failed.
– Kaloyan
Nov 20 '18 at 11:53
I added the enctype="multipart/form-data" and fixed $_FILES, but I am redirected to a complete blank page. Does anyone know why I am redirected to a blank page? When I remove the enctype="multipart/form-data" it goes again to File Upload failed.
– Kaloyan
Nov 20 '18 at 11:53
add a comment |
0
active
oldest
votes
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
1
You have $FILES instead of $_FILES....
– Sloan Thrasher
Nov 19 '18 at 23:26
1
Does your image gets through? Normally you need
method="post" enctype="multipart/form-data">
in your form– Diogo Santo
Nov 19 '18 at 23:29
I added the enctype="multipart/form-data" and fixed $_FILES, but I am redirected to a complete blank page. Does anyone know why I am redirected to a blank page? When I remove the enctype="multipart/form-data" it goes again to File Upload failed.
– Kaloyan
Nov 20 '18 at 11:53