Reputation: 4944
I am trying to use the form below to insert images into a MySQL database. However, nothing is being put into the MySQL table. Any idea why it's not working?
Thanks in advance,
John
EDIT: The image is $image1
.
The form:
echo '<form enctype="multipart/form-data" action="http://www...com/.../submit2.php" method="post">
<input type="hidden" value="'.$_SESSION['loginid'].'" name="uid">
<div class="submissiontitle"><label for="title">Blog Post Title:</label></div>
<div class="submissionfield"><input class="checkMax3" name="title" type="title" id="title" maxlength="80"></div>
<div class="texttitle"><label for="text1">Blog Post Text 1:</label></div>
<div class="textfield"><textarea class="checkMax" name="text1" type="comment" id="text1" maxlength="10000"></textarea></div>
<div class="imagetitle"><label for="image1">Image 1:</label></div>
<div class="imagefield"><input type="file" name="image1" /></div>
<div class="hyperlinktitle"><label for="url1">Hyperlink 1:</label></div>
<div class="hyperlinkfield "><input name="url1" type="title" id="url1" maxlength="200"></div>
<div class="submissionbutton"><input name="submit" type="submit" value="Submit"></div>
</form>
';
The query on submit2.php:
$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$uid = $_POST['uid'];
$title = $_POST['title'];
$text1 = $_POST['text1'];
$image1 = $_POST['image1'];
$image1 = $_FILES['image1'];
$url1 = $_POST['url1'];
$submissionid = mysql_insert_id();
$info1 = getImageSize($image1['tmp_name']);
$queryimage1 = sprintf(
"insert into images (NULL, submissionid, filename, mime_type, file_size, file_data)
values ('%s', '%s', '%s', %d, '%s')",
$submissionid,
mysql_real_escape_string($image1['name']),
mysql_real_escape_string($info1['mime']),
$image1['size'],
mysql_real_escape_string(
file_get_contents($image1['tmp_name'])
)
)or die(mysql_error());
mysql_query($queryimage1);
Upvotes: 1
Views: 274
Reputation: 7906
i feel you should use
$image1 = $_FILES['image1'];
$newImage = file_get_contents($image1);
and use $newImage in your Mysql query
sorry it was not complete
update
$image1 = $_FILES['image1']['tmp_name'];
$newImage = file_get_contents($image1);
Upvotes: 0
Reputation: 2637
Depending on how large the images are, you may to have change MySQL's max_allowed_packet value. The default is 1MB, any larger images will result in an error and no data stored.
Upvotes: 0
Reputation: 360892
Did you check if the file upload succeeded?
if ($_FILES['image1']['error'] !== UPLOAD_ERR_OK) {
die("File didn't upload, error code is {$_FILES['image1']['error']");
}
Did you check if the query succeeded?
$result = mysql_query($queryimage1);
if ($result === FALSE) {
die("Query failed: " . mysql_error());
}
Honestly... why are there so many posts here without even the most basic simplest of error handling/checking? It's as if people expect code to magically work regardless of any errors, so there's no point in putting in error handling.
Upvotes: 2