Mysql blob + img+ php+mysql =?

shiyri

Новичок
Здравствуйте, помогите пожалста, если кодировку убираю то изображение считывается, но при это кирилица пишется в mysql абра-кадаброй, если кодировку указать-то изображение изображение не считывается с бд.
HTML:
<?php
if((count($_FILES) > 0)AND(is_uploaded_file($_FILES['userImage']['tmp_name']))) {
    require_once "db.php";
    $imgData =addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
    $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
    $type = $_POST['type'];
    $names = $_POST['names'];
    $sostav = $_POST['sostav'];
    $ves = $_POST['ves'];
    $opisanie = $_POST['opisanie'];
    $query = "INSERT INTO kuchnya(type, names, sostav, ves, opisanie, imageType, imageData )
    VALUES('{$type}', '{$names}', '{$sostav}', '{$ves}', '{$opisanie}','{$imageProperties['mime']}', '{$imgData}')"; 
 
    mysqli_query($conn,"SET CHARACTER SET 'utf8'");
 
    date_default_timezone_set('Asia/Yekaterinburg');
    $result = mysqli_query($conn, $query) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error($conn));
    if(isset($query)) {
        mysqli_free_result($result);
        header("Location: listImages.php");
        exit();
    }
}
?>
<!DOCTYPE html>
<HTML lang="en">
<HEAD>
<meta charset="utf-8">
 
<form name="frmImage" enctype="multipart/form-data" action="" method="post" class="frmImageUpload">
<select name="type">
    <option selected disabled>выбери меня:</option>
    <option value="6">6</option>
    <option value="5">5</option>
    <option value="4">4</option>
    <option value="3">3</option>
    <option value="2">2</option>
    <option value="1">1</option>
   </select>
<input name="names" type="text" class="text"/>
<input name="sostav" type="text" class="text"/>
<input name="ves" type="text" class="text"/>
<input name="opisanie" type="text" class="text"/>
<input name="userImage" type="file" class="inputFile" />
<input type="submit" value="Сохранить" class="btnSubmit"/></form>
</BODY>
</HTML>
 

fixxxer

К.О.
Партнер клуба
В-нулевых, устанавливать кодировку не через запрос set names, а вызовом mysqli_set_charset (и это надо делать 1 раз, в твоем db.php, а не копипастить по всему коду).
Во-первых, не делать addslashes (вообще никогда, забудь про эту фигню). Делать prepared statements, или на худой конец mysql_real_escape_string _после_ вызова mysqli_set_charset.
Во-вторых, покажи тип поля. Если text или что-то вроде того, меняй на blob.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну и в-третьих - не надо хранить картинки в базе.
 

shiyri

Новичок
сделал через два коннекта, работает и без заморочек.... :)


Код:
    $query = "INSERT INTO kuchnya(imageType, imageData ) VALUES('{$imageProperties['mime']}', '{$imgData}')";   
    $result = mysqli_query($conn, $query) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error($conn));
    mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    date_default_timezone_set('Asia/Yekaterinburg');
    $query = "UPDATE kuchnya set type = '{$type}', names = '{$names}', sostav = '{$sostav}', ves = '{$ves}', opisanie = '{$opisanie}' where names is null ORDER BY imageId DESC LIMIT 1";   
    $result = mysqli_query($conn, $query) or die("<b>Error:</b>not insert data<br/>" . mysqli_error($conn));
    mysqli_close($conn);
 

Фанат

oncle terrible
Команда форума
"поцарапал палец, ковыряю в носу кочергой. работает без всяких пластырей!"
 
Сверху