Reputation: 45
I'm having issue uploading a BLOB into my MySQL database and get the following error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄ' at line 1
I know the error is resulting in the image's file contents but I can't figure out what's wrong with the syntax. Any suggestions? Thanks!
Here's the PHP:
$file = $_FILES['image']['tmp_name'];
// If there's no file selected when button is pressed, echo out and tell the user to select an image to upload
if (!isset($file))
echo "<p>Please select an image to upload.</p>";
else {
//mysql escape string
$image = file_get_contents($_FILES['image']['tmp_name']);
//and here
$image_name = $_FILES['image']['name'];
$imagesize = getimagesize($_FILES['image']['tmp_name']);
}
// Checks that the file being uploaded is an image, i.e. has a size attribute with height & width dimensions
if ($imagesize == FALSE)
echo "<p>Please upload only an image file such as .jpg or .png.</p>";
else {
$sql = "INSERT INTO design (id, caption, image) VALUES ('', '$image_name', '$image')";
$result = mysql_query($sql);
if (!$result)
echo "<p>Something went wrong.</p>" . mysql_error();
else {
echo "<p>Thank you for submitting your design.</p>";
}
}
Upvotes: 1
Views: 695
Reputation: 191779
Apparently the image file contents has an apostrophe in it. That's not that surprising. You need to properly escape the input (and all inputs for that matter).
$image = mysql_real_escape_string($_FILES['image']['tmp_name']);
Instead of using ext/mysql
, you should use properly parameterized queries with mysqli or PDO. Then you don't have to escape explicitly.
Upvotes: 2