Joshua
Joshua

Reputation: 6843

Viewing Content Of Blob In phpMyAdmin

Sorry for the Noob Question, but what does the circled button mean, and how can I view the content of a blob? alt text
(source: rigel222.com)

Upvotes: 38

Views: 69554

Answers (9)

ftrotter
ftrotter

Reputation: 3144

earlier versions of phpmyadmin had a setting called

$cfg['ShowBlob']              = TRUE;

That would allow you to view the contents of blobs in the browser. You should note that this would cause chaos if you were storing binary files in blobs, since you would see endless gobblygok in the browser window. There are some people (like me) who decided that their application needed to use BLOB types to store text (seemed like a good decision at the time, and as I recall there was some thinking on my part that went into the decision). However phpmyadmin decided to discourage this by deprecating this config setting. Understandable since doing this might cause quite a support request. Apparently the thinking was to move people over the TEXT field types.

Happily displaying the contents of blobs has been moved into the user interface rather than the configuration.

The simplest way to see the contents of blobs when you are browsing is to click the link:

+ Options

Happily your screenshot already shows the + Options in the top part of the top image.

Which will display a form that will allow you to display blobs (and binaries). Click that and it will add it to your choice to the session, ensuring that you see the contents from then on.

You can also get the same result using print view:

Print view (with full texts)

Which lives at the bottom of the page.

Sadly both of these techniques are not helpful if you always want to display the blob, since it appears to reset frequently. You can fix this by adding the line

$_GET['display_blob'] = true;

At the beginning of the sql.php file. I think there might be a better way to do this, and I hope someone else might bring it up...

(note: as Rodrigo pointed out you can manually achieve this effect by appending &display_blob=true on the URL)

Your specific question about the "Choose File" button is simple. Most of the uses of blobs are for storing digital files in the database. This button allows you to upload a new file into the database. If you select a file and click "go" it will try to stuff the contents of that file into the blob column for you.

Just to note, simply displaying the contents of the blob is probably not what other users want. When I look at the "blob summary" before I use this option to display the blobs I see blob sizes of 55 bytes max. Your example has bigger values, because it looks like you are storing very small text files, which I assume means paragraphs of text. If the size is bigger then 10's of kilo-bytes it is probably a binary file that will just display gooblegok.

If you want to download binary files intelligently (rather than displaying them as text) I think you need to look into what phpmyadmin calls blobstreaming.

Upvotes: 35

Kapil Kumar
Kapil Kumar

Reputation: 141

There is already a handler in phpMyAdmin to show blob data For this just add "&display_blob=true" at the end of the url. Change url like below:

*****phpmyadmin/sql.php?db=database_name&table=table_name

to

*****phpmyadmin/sql.php?db=database_name&table=table_name&display_blob=true

Upvotes: 2

Bill
Bill

Reputation: 27

Save Link As txt file

You can right click on phpMyAdmin and save link as txt file extension to view the blob text file type

Upvotes: 1

Bob Stein
Bob Stein

Reputation: 17204

For new visitors, another way to view BLOB columns is the QUOTE() function. You can create a view out of it for convenience. (A view behaves like a table but it's really a kind of saved query):

CREATE VIEW log_text AS SELECT BlobID, FileName, CAST(QUOTE(Content) AS CHAR) FROM log;

You'll have to CAST the result as CHAR because QUOTE(binary) is still binary. This may cause some chaos (as @ftrotter puts it) because QUOTE only translates control characters, not supra-ASCII characters.

enter image description here

For less chaos use HEX().

Upvotes: 4

Demodave
Demodave

Reputation: 6632

I've added additional this to me to config.inc.php that helped me out so much

# Show BLOB data on table browse pages.  Hack to hardcode all requests.
$_REQUEST['display_blob'] = true;

Upvotes: 1

Marc Delisle
Marc Delisle

Reputation: 9012

The "Choose file" dialog permits you to pick a file on your workstation and upload it inside the blob column for this row.

If your BLOB contains JPEG or PNG images, you can actually view their thumbnails when browsing, with the full image being displayed when you click on the thumbnail. See https://phpmyadmin.readthedocs.org/en/latest/transformations.html.

Upvotes: 1

wiifm
wiifm

Reputation: 3798

New versions of PHPMyAdmin seem to require a slightly different solution

$cfg['ProtectBinary'] = FALSE;

Place this at the end of the file /etc/phpmyadmin/config.inc.php

Or by using this one liner

echo "\$cfg['ProtectBinary'] = FALSE;" | sudo tee -a /etc/phpmyadmin/config.inc.php

This worked for me on PHPMyAdmin version 3.4.10.1deb1

Upvotes: 2

Rodrigo
Rodrigo

Reputation: 261

Put &display_blob=true on the end of your URL.

Upvotes: 26

cwd
cwd

Reputation: 54756

I think the best solution is to change this line:

$cfg['Servers'][$i]['extension'] = 'mysql';

to this:

$cfg['Servers'][$i]['extension'] = 'mysqli';

If you have the mysqli extension available, use it. It is more secure, a bit more optimized, and it handles the BLOB type of utf-8 better by default. Your [BLOB] entries should start showing up as their values without having to add in any other special configuration options.

Upvotes: 2

Related Questions