PHP, SQL Server kullanarak ikili veri ekleme

3 Cevap php

Ben bir SQL Server 2005 veritabanı olur.Sıd (MAX) alanı var. Ben PHP kullanarak bu alana (bir görüntüye yani) ikili veri eklemek nasıl anlamaya çalışıyorum. Ben SQL Server veritabanına bağlantı için ODBC kullanıyorum. Ben bir MySQL veritabanı ile kullanmak için bu açıklar ama SQL Server ile çalışmak için mümkün olmamıştır bir dizi örnek gördük. Teşekkürler.

3 Cevap

Yanıt çok basit: ne yaptığınızı durdurmak.

Eğer bazı çok özel güvenlik sorunları yoksa bir veritabanı içinde ikili dosyaları saklamak istemiyorum. Bunun yerine kendi dosya adlarını saklamak (muhtemelen çatışmasında engellemek için dosyaları yeniden adlandırın) ve daha sonra veritabanında bu depolamak istiyor. Güvenlik sorunu ise, o zaman olmayan bir web klasörüne sonra koymak ve dosya almak için kodu kullanabilirsiniz ve kullanıcı buna erişimi varsa, yalnızca dosyayı hizmet vermektedir.

Bir veritabanı içinde görüntüleri veya dosyaları saklamak dosya alanı atık, veritabanlarının bir yanlış kullanımı, ve şeyler onlar en iyi ne yapmak izin değildir; dosya sistemi veritabanı verilerini bilen, dosyaları bilir.

function prepareImageDBString($filepath)
{
    $out = 'null';
    $handle = @fopen($filepath, 'rb');
    if ($handle)
    {
        $content = @fread($handle, filesize($filepath));
        $content = bin2hex($content);
        @fclose($handle);
        $out = "0x".$content;
    }
}

kullanımı:

$out = prepareImageDBString('/img/myimg.png');
mssql_query("INSERT INTO MyTable(MyImage) VALUES($out) ");

MyImage tip görüntü SQL Server alandır

TravisO dediği gibi bu iyi practive olmadığını ikna olsa bile, bu, Boss veritabanında görüntü saklamak istiyorum, sadece durumda, veritabanındaki yanlış saklama görüntü

Ben bu görüntü ne kadar büyük bağlıdır ve uygulama kullanmak nasıl, onu kötü bir uygulama olduğunu söylemek olmaz.

If file below 256K in size, store in db is more efficient; More than 1 mb, store in file-system is recommended.

Storing images in SQL Server?