powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
13 сообщений из 13, страница 1 из 1
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318554
Mabus666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Честно! Я закипел (((

Имеем:
1. Сервер Win 2008 R2
2. PHP версия 5.4.7
3. СУБД MS SQL 2005
4. Подключение через ODBC (Driver={SQL Server})

Через ODBC потому, как я понял, что связать php 5.4.7 и MS SQL 2005 драйверами от MS никак - не совместимы ((( только
php < 5 ~ MS SQL 2005 (SQL_SRV v2) а php > 5.4 ~ MS SQL 2008 (SQL_SRV v3).


Необходимо фотки грузить в базу...собсна в VARCHAR(max) - есть необходимость, не спрашивайте почему не файлами в папке хранить.

Так вот:

Если файл прилетел -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$sotr_id = 2;
$uploaddir = './img/photos/';
If (!empty($_FILES['userfile2']['name'])) {
$uploadfile = $uploaddir .$sotr_id.'_'. basename($_FILES['userfile2']['name']);
  if (move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile)) {
                $content  = file_get_contents($uploadfile); 
 		$sql  = "UPDATE MEDECINS_INFO SET Photo = '$content' where MEDECINS_ID = $sotr_id";
 		$stmt = odbc_exec($conn, $sql);
 };
};

И естественно на выхлопе мы пролетаем Аргентине 3-0 ((( Потому как у файлика внутри и кавычки и переносы строк и всякие пущие символы.... так вот вопрос как быть? Как экранировать? Я плачу ((((


Надеюсь доступно :)
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318556
Mabus666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно!!! Бьюсь очень давно ((
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318562
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
base64_encode()
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318705
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mhxbase64_encode()
Чтобы картинка весила в полтора раза больше
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318708
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сабжу, - надо эсекйпить данные.
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318803
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318938
Mabus666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mhxbase64_encode()

Дай я тебя расцелую златопопый ))) Спасибо ))) Сейчас будет вам решение )))
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318950
Mabus666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PHP

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
$uploaddir = './img/photos/';

If (!empty($_FILES['userfile2']['name'])) {
$uploadfile = $uploaddir .$sotr_id.'_'. basename($_FILES['userfile2']['name']);

if(file_exists($uploadfile)) {unlink($uploadfile);}; 

if (move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile)) {

list($oldwidth, $oldheight, $type) = getimagesize($uploadfile);

	  switch ($type) {
       case IMAGETYPE_JPEG: $typestr = 'jpeg'; break;
      case IMAGETYPE_GIF: $typestr = 'gif' ;break;
       case IMAGETYPE_PNG: $typestr = 'png'; break;
   }
   
$content = file_get_contents($uploadfile); 
$content = base64_encode($content);

 		$sql  = "EXEC SGZ_WEB_POSTIMG 1, '$content', $sotr_id,'$typestr'";
 		$stmt = odbc_exec($conn, $sql);

};
};

...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318961
Mabus666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL функции

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE FUNCTION [dbo].[udfBase64_DecodeChar]
    (@Char char(1))
RETURNS INT
BEGIN
    DECLARE @Val int
    SET @Val = ASCII(@char)
   
    RETURN    (
                SELECT CASE
                    WHEN @Val >= 65 AND @Val <=  90  THEN @Val - 65
                    WHEN @Val >= 97 AND @Val <= 122  THEN @Val - 71
                    WHEN @Val >= 48 AND @Val <=  57  THEN @Val + 4
                    WHEN @Val = 43                     THEN 62
                    WHEN @Val = 47                     THEN 63
                    ELSE NULL
                    END
            )
END

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE FUNCTION [dbo].udfBase64_Decode
    (@Base64 VARCHAR(max))
RETURNS VARBINARY(MAX)
AS
BEGIN
    DECLARE @output VARBINARY(MAX)
WHILE LEN(@Base64) > 0
    BEGIN
        DECLARE @CharVal1 INT, @CharVal2 INT, @CharVal3 INT, @CharVal4 INT,
                @Val1 varbinary(1), @Val2 varbinary(1), @Val3 varbinary(1), @Val4 INT
        SELECT    @CharVal1 = [dbo].[udfBase64_DecodeChar](SUBSTRING(@Base64, 1, 1))
                , @CharVal2 = [dbo].[udfBase64_DecodeChar](SUBSTRING(@Base64, 2, 1))
                , @CharVal3 = [dbo].[udfBase64_DecodeChar](SUBSTRING(@Base64, 3, 1))
                , @CharVal4 = [dbo].[udfBase64_DecodeChar](SUBSTRING(@Base64, 4, 1))
        SELECT @Val1 = @CharVal1 * 4 + @CharVal2 / 16
                , @CharVal2 = @CharVal2 - ((@Charval2 / 16) * 16)
        SELECT @Val2 = @CharVal2 * 16 + @CharVal3 / 4
                , @CharVal3 = @CharVal3 - ((@Charval3 / 4) * 4)
        SELECT @Val3 = @CharVal3 * 64  + @CharVal4
        SELECT @Output = ISNULL(@Output,CONVERT(varbinary(max),''))
                        + @Val1
                        + ISNULL(@Val2,CONVERT(varbinary(max),''))
                        + ISNULL(@Val3,CONVERT(varbinary(max),''))
        SET @Base64 = SUBSTRING(@Base64,5,LEN(@Base64))
    END
    RETURN @Output
END
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318970
Mabus666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL Хранимка на UPDATE таблицы с картинками

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ALTER procedure SGZ_WEB_POSTIMG @type int, @src varchar(MAX), @MEDECINS_ID int, @FILE_EXT varchar(10)
AS
BEGIN

if @type = 1
begin
UPDATE MEDECINS_INFO 
SET PHOTO = dbo.udfBase64_Decode(@src), 
      PHOTO_FILE_EXT = @FILE_EXT  
WHERE MEDECINS_ID = @MEDECINS_ID
end

END
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38318980
Mabus666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И надо же работает! ))) Это же олололо-пыщ-пыщ ))) Кателок то варит еще))) Только подтолкнуть надо ))))
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38319243
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и нафик эти кодирования туда-сюда?
...
Рейтинг: 0 / 0
PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
    #38319698
Rastamans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй в качестве запросов в БД не прямой запрос из скрипта а хранимую процедуру! Поможет процентов на 90% уверен так как сам сталкивался с такой проблемой и решил ее только через хранимые процедуры!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP 5.4.7 + ODBC+ MS SQL 2005 = Проблема с сохранением картинки в базу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]