2013-04-07 3 views
1

У меня вопрос загрузив BLOB в моей базе данных MySQL и получить следующее сообщение об ошибке:MySQL Ошибка синтаксиса при загрузке изображения

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 

Я знаю, что ошибка приводит к содержимому файлов изображения, но я не могу выяснить, что не так с синтаксисом. Какие-либо предложения? Благодаря!

Вот 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>"; 
    } 
} 
+0

Вместо заполнения изображений в базе данных вы должны хранить их в файловой системе –

ответ

2

Видимо содержимое файла изображения имеет апостроф в нем. Это не удивительно. Вам нужно правильно избежать ввода (и все входы, если на то пошло).

$image = mysql_real_escape_string($_FILES['image']['tmp_name']); 

Вместо использования ext/mysql, вы должны правильно использовать параметризованные запросы с MySQLi или PDO. Тогда вам не нужно бежать явно.

+0

Только проблема с вашим ответом заключается в том, что вы все еще используете функции mysql_ *, которые были обесценены, и я бы рекомендовал их не использовать. – Diemuzi

+0

@Diemuzi Я делаю во втором абзаце –

+0

Спасибо! Я даже прокомментировал мой код, чтобы добавить 'mysql_real_escape_string' обе эти переменные! Я идиот. –

Смежные вопросы