Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Картинка в MySQL

390
17 сентября 2005 года
lexus
143 / / 13.04.2004
Как в базу MySQL записать картинку и потом вывести ее в PHP?
249
17 сентября 2005 года
DissDoc
639 / / 01.10.2004
Цитата:
Originally posted by lexus
Как в базу MySQL записать картинку и потом вывести ее в PHP?


Как в базу записать картинку не знаю, но если читать статьи о mysql, то везде говориться, что в бд нужно хранить токо ссылку на изображение, иначе бд будет тормозить!

390
17 сентября 2005 года
lexus
143 / / 13.04.2004
Цитата:
Originally posted by DissDoc
Как в базу записать картинку не знаю, но если читать статьи о mysql, то везде говориться, что в бд нужно хранить токо ссылку на изображение, иначе бд будет тормозить!


Если в папке будет несколько тысяч картинок, по идее, тормозить будет не меньше.Подскажите, как это все лучше реализовать

249
17 сентября 2005 года
DissDoc
639 / / 01.10.2004
Цитата:
Originally posted by lexus
Если в папке будет несколько тысяч картинок, по идее, тормозить будет не меньше.Подскажите, как это все лучше реализовать


Тебе же уже я ответил, что лучше хранить изображения в файле1 Но бывают такие случаи, когда хостинг тарифицирует только, то что лежит на сервере, а бд не тарифицирует! Тогда конечнор лучше на сервере хранить например 10мб, а в бд 10гб ;) Но вообще бработа с большими данными не конек MySQL.
И вот тебе пример как хранить фотк например

 
Код:
<?php
  // Имя файла
  $filename = "image.jpg";
  // Открываем файл
  $fd = fopen($filename,"r");
  // Читаем его содержимое в буфер
  $bufer = fread($fd,filesize($filename));
  // Закрываем файл
  fclose($fd);
?>

а $bufer пиши в бд с помощью скрипта типа insert into... values... =)) Думаю разберешься!
299
18 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by lexus
Если в папке будет несколько тысяч картинок, по идее, тормозить будет не меньше.Подскажите, как это все лучше реализовать


тормозить от этого вообще не будет.
А в базе если они будут, тормозить будет.
Подумай сам почему.

2
19 сентября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by 3D Bob
тормозить от этого вообще не будет.
А в базе если они будут, тормозить будет.
Подумай сам почему.


аффтар! почитай, и не желай ерунды ;)

http://forum.sysadmins.ru/13/85762/

299
19 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by squirL
аффтар! почитай, и не желай ерунды ;)

http://forum.sysadmins.ru/13/85762/


Я сам уже задумался об этом...
Тормозить никогда не будет:D :D :D :D

2
19 сентября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by 3D Bob
Я сам уже задумался об этом...
Тормозить никогда не будет:D :D :D :D



в смысле? не понял твоего поста...

299
19 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by squirL
в смысле? не понял твоего поста...


А я твоего) Какой ерудны я желал?:) Я вообще ничего не желал) Я сказал, что эт чушь, что тормозить будет, если в каталоге будет тысячи файлов.

2
19 сентября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by 3D Bob
А я твоего) Какой ерудны я желал?:) Я вообще ничего не желал) Я сказал, что эт чушь, что тормозить будет, если в каталоге будет тысячи файлов.

мой пост был автору топика.

513
21 сентября 2005 года
Yurec
228 / / 21.09.2005
Оптимальный вариант, это сохранять картинки на диск с именем = id записи в таблице.
Например при добавлении новой фотки в фотоальбом
сделать так:
 
Код:
--табличка фотоальбом
CREATE TABLE `album` (
  `albm_id` int(10) unsigned NOT NULL auto_increment,
  `photo_about` varchar(200) default NULL,
  PRIMARY KEY  (`albm_id`)
)


 
Код:
/*photo.html*/
<form action="photo_do_add.php" method=post ENCTYPE="multipart/form-data">
Фото: <input type=file name="photo_file" size=37 value="">
Описание:<input type=text name="photo_about" size=50 maxlength=200 value="">
<input type=submit value="добавить фото">
</form>


Код:
/*photo_do_add.php*/
//вставить запись в бд
$sql = "INSERT INTO album(albm_id,photo_about)  VALUES ('','".$photo_about."')";
mysql_query($sql);

//если закачали рисунок
if(is_uploaded_file($photo_file))
{
//найдём id новой записи
$my_query = "SELECT MAX(albm_id) AS max_id FROM album";
$my_result=mysql_query($my_query);
$my_array=mysql_fetch_array($my_result);
$d_id=$my_array["max_id"];

copy($photo_file,"photos/".$d_id.".jpg");
}

Смущает как получить id тока что добавленной записи (я это делаю-SELECT MAX(albm_id), т.е. получаю max id -последний по значению). Но не может ли случиться так что несколько пользователей работают с таблицей и возникнет конфликт? Использовать LOCK_TABLES? Или мона узнать как-нить по хитрому однозначно значение id тока что добавленной записи?
8
21 сентября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Yurec
Смущает как получить id тока что добавленной записи (я это делаю-SELECT MAX(albm_id), т.е. получаю max id -последний по значению). Но не может ли случиться так что несколько пользователей работают с таблицей и возникнет конфликт? Использовать LOCK_TABLES? Или мона узнать как-нить по хитрому однозначно значение id тока что добавленной записи?


Такого не случится. Навряд-ли два запроса пересекутся в течение трёх тысчных секунды. Ну а если и случится раз в тысячелетие, то стоит-ли об этом тосковать?
В этом случае предлагаю сначала определяться с id, забронировать его и дальше с ним работать. Правда, в этом случае придётся отказаться от автоинкремента.

338
21 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Yurec

Но не может ли случиться так что несколько пользователей работают с таблицей и возникнет конфликт? Использовать LOCK_TABLES? Или мона узнать как-нить по хитрому однозначно значение id тока что добавленной записи?


Учим транзакции, учим. Читаем мануалы, читаем. До просветления. Базы - они ведь для того и создавались дабы решить упомянутые проблемы.
LAST_INSERT_ID([expr]) - по поводу последнего вопроса.

8
21 сентября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by chigevara
Учим транзакции, учим. Читаем мануалы, читаем. До просветления. Базы - они ведь для того и создавались дабы решить упомянутые проблемы.
LAST_INSERT_ID([expr]) - по поводу последнего вопроса.


Всё было бы хорошо, если бы не было так плохо: у меня на всех базах (версии разные, стоят у разных хостёров) SELECT LAST_INSERT_ID(id) FROM table возвращает полностью столбец id, как если бы я написал просто SELECT id FROM table.
В чём тут беда - не знаю, хотя мануалы действительно обещают пресловутый LAST_INSERT_ID...

338
22 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by mfender
Всё было бы хорошо, если бы не было так плохо: у меня на всех базах (версии разные, стоят у разных хостёров) SELECT LAST_INSERT_ID(id) FROM table возвращает полностью столбец id, как если бы я написал просто SELECT id FROM table.
В чём тут беда - не знаю, хотя мануалы действительно обещают пресловутый LAST_INSERT_ID...


Вообщето её без параметра надо вызывать. Параметр - если надо установить точку отсчета.

8
22 сентября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by chigevara
Вообщето её без параметра надо вызывать. Параметр - если надо установить точку отсчета.


Без параметра выдаёт ровно такое же количество нулей.

513
22 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by chigevara
Учим транзакции, учим. Читаем мануалы, читаем. До просветления. Базы - они ведь для того и создавались дабы решить упомянутые проблемы.
LAST_INSERT_ID([expr]) - по поводу последнего вопроса.



На php.spb.ru есть статья, которая называется что-то вроде "Параллельное выполнение скриптов может нарушить целостность данных в базе". Там как раз предлпгпется использоватиь функции LOCK_TABLES и UNLOCK_TABLES. Транзакций в MYSQL НЕТ. В качестве альтернативы транзакциям и имеются функции LOCK_TABLES/UNLOCK_TABLES.
LAST_INSERT_ID([expr]) не знал-СПАСИБО за help! (хотя проьблемы с целостностью он так и не решит(((()

338
22 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Yurec
Транзакций в MYSQL НЕТ.


Наглая ложь.
mysql_manual -> 6.7 Команды управления транзакциями и блокировками в MySQL

Цитата:

LAST_INSERT_ID([expr]) не знал-СПАСИБО за help! (хотя проьблемы с целостностью он так и не решит(((()


Обман с особым цинизном. Тот же мануал ->

Цитата:

Значение последнего сгенерированного ID сохраняется на сервере для данного конкретного соединения и не будет изменено другим клиентом. Оно не будет изменено даже при обновлении другого столбца AUTO_INCREMENT конкретной величиной (то есть, которая не равна NULL и не равна 0).



В общем народ, не стесняйтесь, если что еще почитать надо - обращайтесь, ради вас - на любые жертвы :D

513
22 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by chigevara
Наглая ложь.
mysql_manual -> 6.7 Команды управления транзакциями и блокировками в MySQL

Обман с особым цинизном. Тот же мануал ->


В общем народ, не стесняйтесь, если что еще почитать надо - обращайтесь, ради вас - на любые жертвы :D



Ясно в чём дело просто говорим о разных версиях....
Транзакции работают с 3.23.*

2
22 сентября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Yurec
Ясно в чём дело просто говорим о разных версиях....
Транзакции работают с 3.23.*

ъ
ну ребята... повеселили... дык кто ж такое старье юзает?? а Linux у вас тоже HyperThreading не поддерживает, потому что ядро 2.2.Х???

300
22 сентября 2005 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by squirL
ъ
ну ребята... повеселили... дык кто ж такое старье юзает??


Поверишь???

338
22 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by ReDrum
Поверишь???


Короче, разговора о версиях не было. Было утверждение о том что транзакций нет. В смысле вообще. То же по поводу LAST_INSERT_ID. И не в версиях дело.

513
23 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by chigevara
Короче, разговора о версиях не было. Было утверждение о том что транзакций нет. В смысле вообще. То же по поводу LAST_INSERT_ID. И не в версиях дело.



И что вы все тут такие грозные? Будто не помощи друг от друга ждём а повода поругаться?

338
23 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Yurec
И что вы все тут такие грозные? Будто не помощи друг от друга ждём а повода поругаться?


Ээээ... Забыл рожицы нарисовать. :D :D :D

2
23 сентября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by ReDrum
Поверишь???


вполне :) но надо ж в ногу со временем идти ;)

513
23 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by squirL
вполне :) но надо ж в ногу со временем идти ;)



Вполне Логичично.

8
23 сентября 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by squirL
вполне :) но надо ж в ногу со временем идти ;)


Хорошо идётся, когда дома на локальном серванте сидишь. А когда у хостёра на сегодняшнее число стоит MySQL 3.23.58 - о какой ходьбе в ногу со временем мы говорим?

513
23 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by mfender
Хорошо идётся, когда дома на локальном серванте сидишь. А когда у хостёра на сегодняшнее число стоит MySQL 3.23.58 - о какой ходьбе в ногу со временем мы говорим?


У меня такая же проблема хостер обновляет PHP, но MYSQL старый (ну не хочет он его обновить). В ногу со временем надо идти не поодиночку, а всем сразу.

8
23 сентября 2005 года
mfender
3.5K / / 15.06.2005
Странно как-то ведёт себя MySQL...
Вот так:
SELECT DISTINCT(LAST_INSERT_ID()) FROM table
Действительно возвращает последний автоинкремент... Но только в том случае, если я в этом же подключении что-то вставляю... Вобщем-то, всё, как и обещал Чигевара:D
Чёрти что творится...:D
300
23 сентября 2005 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by squirL
вполне :) но надо ж в ногу со временем идти ;)



Нелогично. :)
Лучшее - враг хорошего

513
23 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by mfender
Странно как-то ведёт себя MySQL...
Вот так:
SELECT DISTINCT(LAST_INSERT_ID()) FROM table
Действительно возвращает последний автоинкремент... Но только в том случае, если я в этом же подключении что-то вставляю... Вобщем-то, всё, как и обещал Чигевара:D
Чёрти что творится...:D


Тоесть надёжнее всё-таки использовать "SELECT MAX(albm_id) AS max_id FROM album"?

338
24 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Yurec
Тоесть надёжнее всё-таки использовать "SELECT MAX(albm_id) AS max_id FROM album"?


Нет, надежнее всё-таки посмотреть в мануал. А там просят делать так:
SELECT LAST_INSERT_ID();

1.8K
27 сентября 2005 года
tapin13
138 / / 17.06.2004
Цитата:
Originally posted by mfender
Хорошо идётся, когда дома на локальном серванте сидишь. А когда у хостёра на сегодняшнее число стоит MySQL 3.23.58 - о какой ходьбе в ногу со временем мы говорим?



Togda sovetuu smenit' hostera.
Ia zakon4il proekt dlia Moskvi, tak pereprobivali 3 hosting, sredi nih i masterhost, i nikto ne smog dat' poslednih versii MySQL, a dazhe esli i davali to pochemu to bez utf-8. Hosteri oblenilis' odnozna4no!

3.4K
06 октября 2005 года
_Undead_
43 / / 05.10.2004
Цитата:
Originally posted by chigevara
Нет, надежнее всё-таки посмотреть в мануал. А там просят делать так:
SELECT LAST_INSERT_ID();



Вообще-то есть функция: mysql_insert_id( )
Она вернет последний id.

513
06 октября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by _Undead_
Вообще-то есть функция: mysql_insert_id( )
Она вернет последний id.



YES! Вот что мне надо было! Спасибо!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог