|
|
|
| Очень срочно, как в базу данных MySQL в какое либо поле вставить картинку какого нибудь размера. А ещё лучше, можно ли их вставить туда (в одно поле) несколько штук. Дико благодарен... | |
|
|
|
|
|
|
|
для: Den`s
(15.04.2006 в 18:38)
| | Вы хотите хранить именно изображение, а не путь к нему? Тогда лучше для этого использовать поле тип BLOB, а содержимое изображения, которое можно получить из файла при помощи функции file_get_contents() необходимо пропустить через функцию mysql_escape_string()
<?php
$text = mysql_escape_string($text);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(15.04.2006 в 22:31)
| | А каким запросом можно всавить в поле БД картинку. Перед мной стоит задача из тестового поля, в котором есть адрес картинки, закачать картинку в базу данных. Как обращаться с передачей данных и обработкрй строк знаю, а вот с БД MySQL туговато :( | |
|
|
|
|
|
|
|
для: Den`s
(15.04.2006 в 23:44)
| | Для этого необходимо сначала подготовить таблицу, путь для простаты в ней будет лишь два столбца - первичный ключ id_image и поле image для хранения содержимого изображения.
CREATE TABLE tbl (
id_image int(11) NOT NULL auto_increment,
image longblob NOT NULL,
PRIMARY KEY (id_image)
) TYPE=MyISAM;
|
Тогда код вставляющий изображение из файла $filename может выглядеть следующим образом
<?php
// Устанавливаем соединение с базой данных
reqiure_once("config.php");
// Извлекаем содержимое файла $filename
$contents = get_file_contents($filename);
// Экранируем спец-символы
$contents = mysql_escape_string($contents);
// Формируем SQL-запрос
$query = "INSERT INTO tbl VALUES(NULL, '$contents')";
// Выполняем SQL-запрос
if(!mysql_query($query)) exit(mysql_error());
?>
|
Запрос $query будет занимать столько же мегабайт, что и файл, даже чуть-чуть побольше - это может привести к проблемам, если значение системной переменной max_allowed_packet в MySQL установлено в небольшое значение (по умолчанию кажется 2 Мб, правда могу врать).
Для соединения с базой данных вам потребуется конфигурационный файл config.php, следующего содержания
<?php
///////////////////////////////////////////////////
// Панель администрирования
// 2006 (C) IT-студия SoftTime (http://www.softtime.ru)
///////////////////////////////////////////////////
// сейчас выставлен сервер локальной машины
$dblocation = "localhost";
// Имя базы данных, на хостинге или локальной машине
$dbname = "db";
// Имя пользователя базы данных
$dbuser = "root";
// и его пароль
$dbpasswd = "";
// Устанавливаем соединение с базой данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) {
exit( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
}
// Выбираем базу данных
if (! @mysql_select_db($dbname,$dbcnx) ) {
exit( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
}
// Определяем версию сервера
$query = "SELECT VERSION()";
$ver = mysql_query($query);
if(!$ver) exit("Ошибка при определении версии MySQL-сервера");
$version = mysql_result($ver, 0);
list($major, $minor) = explode(".", $version);
// Если версия выше 4.1 сообщаем серверу, что будем работать с
// кодировкой cp1251
$ver = $major.".".$minor;
if((float)$ver >= 4.1)
{
mysql_query("SET NAMES 'cp1251'");
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(16.04.2006 в 13:00)
| | Выдаёт ошибку:
Call to undefined function: get_file_contents()
Версия php: 4.3.9
Выдавал ошибку на: reqiure_once я заменил на include
Может нужны какие то настройки в php.ini ??? | |
|
|
|
|
|
|
|
для: Den`s
(17.04.2006 в 16:36)
| | опечатка. Функция правильно называется file_get_contents() | |
|
|
|
|
|
|
|
для: Trianon
(17.04.2006 в 16:52)
| | Большое спасибо, у меня всё получилось.
Не подскажите, как мне теперь эту картинку прочитать из БД и отобразить. Уже 2 часа мучаюсь и ничего не получается | |
|
|
|
|
|
|
|
для: Den`s
(17.04.2006 в 18:44)
| |
<?php
// Устанавливаем соединение с базой данных
reqiure_once("config.php");
// определяем номер строки с картинкой
$nomer = 1;
// определяем тип картинки
$type = "image/jpeg";
// Формируем SQL-запрос
$query = "SELECT image FROM tbl WHERE id_image=$nomer";
// Выполняем SQL-запрос
if(!($res = mysql_query($query))) exit(mysql_error());
// отправляем тип картинки в заголовке.
header("Content-type: $type");
// отправляем саму картинку
echo mysql_result($res, 0);
?>
|
| |
|
|
|