如果你想把二進制的數據
比如說圖片文件和HTML文件
直接保存在你的MySQL數據庫
那麼這篇文章就是為你而寫的!
我將告訴你怎樣通過HTML表單來儲存這些文件
怎樣訪問和使用這些文件
本文概述 在mysql中建立一個新的數據庫
一個怎樣儲存文件的例子程序
一個怎樣訪問文件的例子程序
在mysql中建立一個新的database
首先
你必須在你的mysql中建立一個新的數據庫
我們將會把那些二進制文件儲存在這個數據庫裡
在例子中我會使用下列結構
為了建立數據庫
你必須做下列步驟
進入MySql控制器
輸入命令
create database binary_data;
輸入命令
use binary_data;
輸入命令
CREATE TABLE binary_data ( id INT(
) NOT NULL AUTO_INCREMENT PRIMARY KEY
description CHAR(
)
bin_data LONGBLOB
filename CHAR(
)
filesize CHAR(
)
filetype CHAR(
));
(不能斷行)
如果沒有意外
數據庫 和 表 應該建立好了
一個怎樣儲存文件的例子程序 用這個例子你可以通過Html表單將文件傳輸到數據庫中
store
php
?php
// store
php
by Florian Dittmer >
?>
HTML>
HEAD>TITLE>Store binary data into SQL Database/TITLE>/HEAD>
BODY>
?php
// 如果提交了表單
代碼將被執行:
if ($submit) {
// 連接到數據庫
// (你可能需要調整主機名
用戶名和密碼)
MYSQL_CONNECT(
localhost
root
password
);
mysql_select_db(
binary_data
);
$data = addslashes(fread(fopen($form_data
r
)
filesize($form_data)));
$result=MYSQL_QUERY(
INSERT 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 {
// 否則顯示儲存新數據的表單
?>
form method=
post
action=
?php echo $PHP_SELF; ?>
enctype=
multipart/form
data
>
File Description:br>
input type=
text
name=
form_description
size=
>
INPUT TYPE=
hidden
name=
MAX_FILE_SIZE
value=
>
br>File to upload/store in database:br>
input type=
file
name=
form_data
size=
>
p>input type=
submit
name=
submit
value=
submit
>
/form>
?php
}
?>
/BODY>
/HTML>
如果你執行了這個程序
你將會看見一個簡單的Html表單
單擊
浏覽
選擇一個文件
然後單擊提交
當文件上傳至web服務器之後
程序將會告訴你剛剛上傳的文件的ID
記住這個ID
待會要用的
一個怎樣訪問文件的例子程序
你可以通過這個程序訪問你剛才儲存的文件
?php
// getdata
php
by Florian Dittmer >
// 調用方法: getdata
php
?id=id>
if($id) {
// 你可能需要調整主機名
用戶名和密碼:
@MYSQL_CONNECT(
localhost
root
password
);
@mysql_select_db(
binary_data
);
$query =
select bin_data
filetype from binary_data where id=$id
;
$result = @MYSQL_QUERY($query);
$data = @MYSQL_RESULT($result
bin_data
);
$type = @MYSQL_RESULT($result
filetype
);
Header(
Content
type: $type
);
echo $data;
};
?>
程序必須知道要訪問那個文件
你必須將ID作為一個參數
例如: 一個文件在數據庫中的ID為
你可以這樣調用它:
getdata
php
?id=
如果你將圖片儲存在數據庫裡
你可以向調用圖片一樣調用它
Example: 一個圖片文件在數據庫中的ID為
你可以這樣調用它:
img src=
getdata
php
?id=
>
怎樣儲存大於
MB的文件:
如果你想儲存大於
MB的文件
你必須對你的程序
PHP設置
SQL設置進行許多修改
下面幾條也許可以幫助你儲存小於
MB的文件
修改 store
php
將 MAX_FILE_SIZE 的值改成
修改你的PHP設置
在一般情況下
PHP只允許小於
MB的文件
你必須將max_filesize(在php
ini中)的值改成
去掉MYSQL的數據包大小限制
在一般情況下 MYSQL 小於
MB的數據包
你必須用以下參數重啟你的MYSQL
/usr/local/bin/safe_mysqld
O key_buffer=
M
O table_cache=
O sort_buffer=
M
O record_buffer=
M
O max_allowed_packet=
M
如果仍然出錯
可能是超時錯誤
如果你通過一個很慢的連接來儲存一個很大的文件
PHP缺省的時間限制為
秒
你可以將max_execution_time(在php
ini中)的值改為
From:http://tw.wingwit.com/Article/program/MySQL/201311/29424.html