MySQL İkili Veri

oy
163

Nasıl ikili veri depolamak do MySQL ?

Oluştur 01/08/2008 saat 06:09
kaynak kullanıcı
Diğer dillerde...                            


10 cevaplar

oy
128

phpguy tarafından yanıt doğrudur ama orada ek ayrıntılar karışıklığa bir sürü olduğunu düşünüyorum.

Temel cevap içindedir BLOBveri türü / nitelik etki. BLOB ikili büyük Nesne kısaltmasıdır ve sütunun veri türü ikili veri işlemek için özeldir.

Bkz MySQL için ilgili kılavuz sayfasını .

Cevap 01/08/2008 saat 13:16
kaynak kullanıcı

oy
54

Böyle bir tablo için:

CREATE TABLE binary_data (
    id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    description CHAR(50),
    bin_data LONGBLOB,
    filename CHAR(50),
    filesize CHAR(50),
    filetype CHAR(50)
);

İşte bir PHP örneği:

<?php
    // store.php3 - by Florian Dittmer <dittmer@gmx.net>
    // Example php script to demonstrate the storing of binary files into
    // an sql database. More information can be found at http://www.phpbuilder.com/
?>

<html>
    <head><title>Store binary data into SQL Database</title></head>

    <body>
        <?php
            // Code that will be executed if the form has been submitted:

            if ($submit) {
                // Connect to the database (you may have to adjust
                // the hostname, username or password).

                mysql_connect("localhost", "root", "password");
                mysql_select_db("binary_data");

                $data = mysql_real_escape_string(fread(fopen($form_data, "r"), filesize($form_data)));

                $result = mysql_query("INSERT IGNORE  INTO binary_data (description, bin_data, filename, filesize, filetype) ".
                                    "VALUES ('$form_description', '$data', '$form_data_name', '$form_data_size', '$form_data_type')");

                $id= mysql_insert_id();
                print "<p>This file has the following Database ID: <b>$id</b>";

                mysql_close();
            } else {

                // else show the form to submit new data:
        ?>
        <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
            File Description:<br>
            <input type="text" name="form_description"  size="40">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
            <br>File to upload/store in database:<br>
            <input type="file" name="form_data"  size="40">
            <p><input type="submit" name="submit" value="submit">
        </form>

        <?php
            }
        ?>
    </body>
</html>
Cevap 01/08/2008 saat 06:12
kaynak kullanıcı

oy
37

Şiddetle tavsiye karşı bir ilişkisel veritabanı ikili veri depolamak. İlişkisel veritabanı sabit boyutlu veri ile çalışmak üzere dizayn edilmiştir; unutmayın: bu onların performans gücüdür nerede Joel'in eski yazı veritabanları çok hızlı olmasının nedeni üzerinde? bu tam olarak 1 işaretçi artış alır, çünkü başka bir kayda bir kayıt taşımak. Eğer tanımsız ve büyük ölçüde değişen büyüklükte BLOB veri eklemek, performansı berbat edeceğiz.

veritabanınızda Bunun yerine, dosya sisteminde mağaza dosyaları ve mağaza dosya adları.

Cevap 17/09/2008 saat 21:37
kaynak kullanıcı

oy
20

Eğer depoladığınız ve bunu yapmak için büyük bir nedeniniz ne olabilir söylemedim iken, çoğu zaman cevaptır ve gerçek verilerin 'bir dosya sistemi referans olarak' bir yere dosya sisteminde.

http://www.onlamp.com/pub/a/onlamp/2002/07/11/MySQLtips.html

Cevap 02/08/2008 saat 15:57
kaynak kullanıcı

oy
16

Bu mağazada istediğiniz verilere bağlıdır. Yukarıdaki örnek kullanan LONGBLOBveri türünü, ancak diğer ikili veri formatları vardır bilmelidir:

TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY

Her onların kullanım durumları vardır. Bilinen bir (kısa) uzunluğu (örn paketlenmiş verileri) çoğu kez ise BINARYveya VARBINARYçalışacaktır. Üzerlerinde mümkün tonluk endeksi olmanın yararı var.

Cevap 31/12/2010 saat 02:04
kaynak kullanıcı

oy
13

Gerekli olmamalıdır ederken, deneyebilirsiniz base64kodlama veri ve dışarı deşifre. Yani db sadece ASCII karakter anlamına gelir. Biraz daha fazla alan ve zaman ancak ikili veri ortadan kalkacaktır ilgisi herhangi bir sorun alacaktır.

Cevap 16/09/2008 saat 05:07
kaynak kullanıcı

oy
10

- Eğer önerilmez - BLOB alan var, Eğer verileri bu şekilde kaydedebilirsiniz:

mysql_query("UPDATE table SET field=X'".bin2hex($bin_data)."' WHERE id=$id");

Fikir alınan burada .

Cevap 12/09/2013 saat 13:00
kaynak kullanıcı

oy
9

Ben ikili veri depolamak gerektiğinde hep kullanmak VARBINARYtanıtıldı olarak, biçimi byd0nut.

Sen belgelenmiş başlığı altında MySQL web sitesinden belgeleri bulabilirsiniz 12.4.2 İKİLİ ve VARBINARY Türleri

Eğer advantagese ne soruyorsan, söz bakmak lütfen neden-varbinary-yerine-of-varchar

Cevap 01/05/2014 saat 10:37
kaynak kullanıcı

oy
9

Sorusu da DAMLA içine verileri almak için nasıl doğar. Sen (siz kullanmalısınız rağmen bir INSERT veri PHP örneği gösterdiği gibi, ifadeyi YOKSAY koyabilirsiniz mysql_real_escape_string yerine addslashes arasında). Dosya veritabanı sunucuda mevcutsa, ayrıca MySQL kullanabilirsiniz LOAD_FILE

Cevap 27/08/2008 saat 16:13
kaynak kullanıcı

oy
8

Mevcut bir çok daha iyi depolama uygulaması burada . Sen Florian uygulamasındaki sorunlar içine edeceğiz.

Cevap 17/09/2008 saat 10:53
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more