Как я могу сохранить и получить изображения от базы данных MySQL с помощью PHP?

Я думаю, что два условия, которые Вы ищете, равенство (==) и , идентификационные данные . Например:

>>> a = [1,2,3]
>>> b = [1,2,3]
>>> a == b
True       <-- a and b have values which are equal
>>> a is b
False      <-- a and b are not the same list object
58
задан Shog9 28 October 2009 в 15:19
поделиться

3 ответа

Сначала вы создаете таблицу MySQL для хранения изображений, например:

create table testblob (
    image_id        tinyint(3)  not null default '0',
    image_type      varchar(25) not null default '',
    image           blob        not null,
    image_size      varchar(25) not null default '',
    image_ctgy      varchar(25) not null default '',
    image_name      varchar(50) not null default ''
);

Затем вы можете записать изображение в базу данных, например:

/***
 * All of the below MySQL_ commands can be easily
 * translated to MySQLi_ with the additions as commented
 ***/ 
$imgData = file_get_contents($filename);
$size = getimagesize($filename);
mysql_connect("localhost", "$username", "$password");
mysql_select_db ("$dbname");
// mysqli 
// $link = mysqli_connect("localhost", $username, $password,$dbname); 
$sql = sprintf("INSERT INTO testblob
    (image_type, image, image_size, image_name)
    VALUES
    ('%s', '%s', '%d', '%s')",
    /***
     * For all mysqli_ functions below, the syntax is:
     * mysqli_whartever($link, $functionContents); 
     ***/
    mysql_real_escape_string($size['mime']),
    mysql_real_escape_string($imgData),
    $size[3],
    mysql_real_escape_string($_FILES['userfile']['name'])
    );
mysql_query($sql);

Вы можете отобразить изображение из базы данных на веб-странице с помощью:

$link = mysql_connect("localhost", "username", "password");
mysql_select_db("testblob");
$sql = "SELECT image FROM testblob WHERE image_id=0";
$result = mysql_query("$sql");
header("Content-type: image/jpeg");
echo mysql_result($result, 0);
mysql_close($link);
121
ответ дан 24 November 2019 в 18:41
поделиться

Помните, что обслуживание изображений из БД обычно намного, намного намного медленнее, чем обслуживание их с диска.

Вы запускаете процесс PHP, открываете соединение с БД, заставляете БД считывать данные изображения с того же диска и ОЗУ для кеширования, что и файловая система, передавая их через несколько сокетов и буферов, а затем отправляя их через PHP, что по умолчанию делает его некэшируемым и добавляет накладные расходы на фрагментированное кодирование HTTP.

Современные веб-серверы OTOH могут обслуживать изображения с помощью всего лишь нескольких оптимизированных вызовов ядра (файл с отображением памяти и эта область памяти, переданная в стек TCP), так что они не 'даже память не копируется, и накладных расходов почти нет.

Это'

9
ответ дан 24 November 2019 в 18:41
поделиться

Я также рекомендую подумать над этим, а затем выбрать сохранение изображений в файловой системе, а не в БД. см. здесь: Хранение изображений в БД - да или нет?

7
ответ дан 24 November 2019 в 18:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: