国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

用PHP和MySQL保存和輸出圖片

2024-07-24 12:56:12
字體:
供稿:網(wǎng)友
設(shè)置數(shù)據(jù)庫
  我們通常在數(shù)據(jù)庫中所使用的文本或整數(shù)類型的字段和需要用來保存圖片的字段的不同之處就在于兩者所需要保存的數(shù)據(jù)量不同。mysql數(shù)據(jù)庫使用專門的字段來保存大容量的數(shù)據(jù),數(shù)據(jù)類型為blob。
  mysql數(shù)據(jù)庫為blob做出的定義如下:blob數(shù)據(jù)類型是一種大型的二進制對象,可以保存可變數(shù)量的數(shù)據(jù)。blob具有四種類型,分別是tinyblob,blob, mediumblob 和longblob,區(qū)別在于各自所能夠保存的最大數(shù)據(jù)長度不同。
  在介紹了所需要使用的數(shù)據(jù)類型之后,我們可以使用以下語句創(chuàng)建保存圖象的數(shù)據(jù)表。
  create table images ( picnum int not null auto_increment primary key, image blob );
編寫上傳腳本
  關(guān)于如何實現(xiàn)文件的上傳,我們在這里就不再介紹了,感興趣的讀者可以參見“網(wǎng)頁陶吧”內(nèi)的相關(guān)文章。現(xiàn)在,我們主要來看一下如何接收上傳文件并將其存入到mysql數(shù)據(jù)庫中。具體的腳本代碼如下,其中我們假定文件上傳域的名稱為picture。
<?
if($picture != "none") {
$psize = filesize($picture);
$mysqlpicture = addslashes(fread(fopen($picture, "r"), $psize));
mysql_connect($host,$username,$password) or die("unable to connect to sql server");
@mysql_select_db($db) or die("unable to select database");
mysql_query("insert into images (image) values ($mysqlpicture)") or die("cant perform query");
}else {
echo"you did not upload any picture";
}
?>
  這樣,我們就可以成功的把圖片保存到數(shù)據(jù)庫中。如果在將圖片插入mysql的過程中出現(xiàn)問題,可以檢查一下mysql數(shù)據(jù)庫所允許的最大數(shù)據(jù)包的大小。如果設(shè)置值過小的話,我們會在數(shù)據(jù)庫的錯誤日志中找到相應(yīng)的記錄。
  下面,我們簡單說明一下上述腳本程序。首先,我們通過“if($picture != "none")”檢查是否有文件被上傳。然后,使用addslashes()函數(shù)避免出現(xiàn)數(shù)據(jù)格式錯誤。最后,連接mysql,選擇數(shù)據(jù)庫并插入圖片。
顯示圖片
  在知道了如何將圖? 入數(shù)據(jù)庫之后,我們就需要考慮怎樣才能從數(shù)據(jù)庫中取出圖片并在html頁面中顯示出來。這個過程要稍微復(fù)雜一些,下面我們就來介紹一下實現(xiàn)過程。
因為php顯示圖片需要發(fā)送相應(yīng)的標頭,所以我們就會面臨這樣一個問題,那就是一次只能顯示一副圖片,因為我們無法在發(fā)出標頭之后再發(fā)送其它的標頭。
為了有效的解決這一問題,我們編寫了兩個文件。其中,第一個文件作為html頁面的模板,定位圖片的顯示位置。第二個文件則被用來從數(shù)據(jù)庫中實際輸出文件流,作為<img>標簽的src屬性。
第一個文件的簡單形式可以如下:
<html> <body>
<?
mysql_connect($host,$username,$password) or die("unable to connect to sql server");
@mysql_select_db($db) or die("unable to select database");
$result=mysql_query("select * from images") or die("cant perform query");
while($row=mysql_fetch_object($result)) {
echo "<img src=/"second.php3? picnum=$row->picnum/">";
} ?>
</body> </html>
  當html頁面被瀏覽時,每顯示一副圖片就會調(diào)用一次second.php3文件。當?shù)诙€文件被調(diào)用時會傳入相應(yīng)的picture id,我們可以借此從數(shù)據(jù)庫中取回對應(yīng)的圖片并顯示。
second.php3文件如下:
<?
$result=mysql_query("select * from images where picnum=$picnum") or die("cant perform query");
$row=mysql_fetch_object($result);
header( "content-type: image/gif");
echo $row->image;
?>
  到此,我們就介紹完了使用php和mysql保存和顯示圖片的全過程。文中所舉得都是一些最簡單的實例,讀者可以根據(jù)自己的實際需要加入其它一些功能,使整個程序更加完善。 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江川县| 呼伦贝尔市| 商洛市| 凤城市| 宁乡县| 武夷山市| 临湘市| 枣庄市| 太白县| 吐鲁番市| 微山县| 和硕县| 任丘市| 紫金县| 日照市| 新蔡县| 湘阴县| 承德县| 万山特区| 仲巴县| 孟州市| 乡宁县| 两当县| 垫江县| 保山市| 南涧| 枣庄市| 方城县| 澄江县| 中江县| 宣恩县| 菏泽市| 丹江口市| 嵊泗县| 台南县| 枣阳市| 北流市| 巩留县| 蒙城县| 河北省| 黑龙江省|