圖片插入到數(shù)據(jù)庫不是個好方法,如果你確實(shí)要存儲圖片到數(shù)據(jù)庫的話,修改你的sql語句,不可以直接插入的。
創(chuàng)新互聯(lián)建站成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運(yùn)營、成都APP應(yīng)用開發(fā)、手機(jī)網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、雅安電信機(jī)房等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)建站可以獲得的服務(wù)效果。
INSERT into person(p_id,p_name,p_sex,p_age) value("asdsadssdsadfff","addsdsa","dddd",113);
update person set p_image = LOAD_FILE('D:\incident1.jpg') where p_id = "asdsadssdsadfff";
建議把'D:\incident1.jpg'放在mysl的安裝目錄里面,避免權(quán)限問題。。。
解釋:sql必須要有對 'D:\incident1.jpg'文件 和相應(yīng)的路徑 讀權(quán)限,要不也不可以的。 另外檢查LOAD_FILE 函數(shù)是否被禁用。這個函數(shù)是個危險的函數(shù),很容易利用該函數(shù)對數(shù)據(jù)庫攻擊。
LOAD_FILE(file_name):
讀取file_name文件 并以字符串形式返回,使用這個函數(shù)時,file_name必須存在于服務(wù)器上,而且是完整路徑,sql要具有file_name的讀取權(quán)限,還有該文件的size必須小于數(shù)據(jù)庫 max_allowed_packet的值,否則讀取的值為空。如果文件不存在或者sql沒有讀權(quán)限,那么該函數(shù)講返回null
1 圖片文件 存儲在磁盤 數(shù)據(jù)庫存儲磁盤的路徑(字符串).
2 把圖片文件序列化轉(zhuǎn)成一個字符串 存儲。
3 直接把圖片文件存儲到 大二進(jìn)制字段里面。
一般情況是將圖片地址寫入數(shù)據(jù)庫,將圖片文件上傳到FTP中,如果要將圖片寫入mysql,你可以先將圖片轉(zhuǎn)成base64后再寫入mysql,其實(shí)真沒這個必要!
如果你想把二進(jìn)制的數(shù)據(jù) 比如說圖片文件和HTML文件 直接保存在你的MySQL數(shù)據(jù)庫 那么這篇文章就是為你而寫的! 我將告訴你怎樣通過HTML表單來儲存這些文件 怎樣訪問和使用這些文件 本文概述 在mysql中建立一個新的數(shù)據(jù)庫 一個怎樣儲存文件的例子程序 一個怎樣訪問文件的例子程序 在mysql中建立一個新的database 首先 你必須在你的mysql中建立一個新的數(shù)據(jù)庫 我們將會把那些二進(jìn)制文件儲存在這個數(shù)據(jù)庫里 在例子中我會使用下列結(jié)構(gòu) 為了建立數(shù)據(jù)庫 你必須做下列步驟 進(jìn)入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( )); (不能斷行) 如果沒有意外 數(shù)據(jù)庫 和 表 應(yīng)該建立好了 一個怎樣儲存文件的例子程序 用這個例子你可以通過Html表單將文件傳輸?shù)綌?shù)據(jù)庫中 store php ?php // store php by Florian Dittmer ? HTML HEADTITLEStore binary data into SQL Database/TITLE/HEAD BODY ?php // 如果提交了表單 代碼將被執(zhí)行: if ($submit) { // 連接到數(shù)據(jù)庫 // (你可能需要調(diào)整主機(jī)名 用戶名和密碼) 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 pThis file has the following Database ID: b$id/b ; MYSQL_CLOSE(); } else { // 否則顯示儲存新數(shù)據(jù)的表單 ? 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= brFile to upload/store in database:br input type= file name= form_data size= pinput type= submit name= submit value= submit /form ?php } ? /BODY /HTML 如果你執(zhí)行了這個程序 你將會看見一個簡單的Html表單 單擊 瀏覽 選擇一個文件 然后單擊提交 當(dāng)文件上傳至web服務(wù)器之后 程序?qū)嬖V你剛剛上傳的文件的ID 記住這個ID 待會要用的 一個怎樣訪問文件的例子程序 你可以通過這個程序訪問你剛才儲存的文件 ?php // getdata php by Florian Dittmer // 調(diào)用方法: getdata php ?id=id if($id) { // 你可能需要調(diào)整主機(jī)名 用戶名和密碼: @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作為一個參數(shù) 例如: 一個文件在數(shù)據(jù)庫中的ID為 你可以這樣調(diào)用它: getdata php ?id= 如果你將圖片儲存在數(shù)據(jù)庫里 你可以向調(diào)用圖片一樣調(diào)用它 Example: 一個圖片文件在數(shù)據(jù)庫中的ID為 你可以這樣調(diào)用它: img src= getdata php ?id= 怎樣儲存大于 MB的文件: 如果你想儲存大于 MB的文件 你必須對你的程序 PHP設(shè)置 SQL設(shè)置進(jìn)行許多修改 下面幾條也許可以幫助你儲存小于 MB的文件 修改 store php 將 MAX_FILE_SIZE 的值改成 修改你的PHP設(shè)置 在一般情況下 PHP只允許小于 MB的文件 你必須將max_filesize(在php ini中)的值改成 去掉MYSQL的數(shù)據(jù)包大小限制 在一般情況下 MYSQL 小于 MB的數(shù)據(jù)包 你必須用以下參數(shù)重啟你的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中)的值改為 lishixinzhi/Article/program/MySQL/201311/29424