MYSQL存取图片的问题?

yukeelau 2002-05-27 12:47:29
我是一个菜鸟,请问各位大侠怎样在 mysql 资料表中存取图片字段?

高分相赠,在线等待。
...全文
281 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
webmin 2002-05-27
  • 打赏
  • 举报
回复
贴一篇文章你自己看一下吧。

怎样插入图象进mysql?
发信站: BBS 水木清华站 (Thu Jul 15 13:25:46 1999) WWW-POST

【 在 weffen (wef) 的大作中提到: 】
: craete table pic(intro TEXT,image LONGBLOB)
: sql 语句怎么写?
这是php+mysql的例子,应该满足你的要求吧.
Saving Images in MySQL

Sometimes, it's more convenient to save images in a database than as files.
MySQL and PHP make it very easy to do this. In this article, I will describe
how to save images in a MySQL database and display them later on.

Setting up the database


The difference between any regular text or integer fields and a field that
needs to save an image is the amount of data that is needed to be held in the
field. MySQL uses special fields to hold large amounts of data. These fields
are known as blobs (blob).

Here is the BLOB definition from the MySQL site :

A BLOB is a binary large object that can hold a variable amount of data. The
four BLOB types TINYBLOB, BLOB, MEDIUMBLOB and LONGBLOB differ only in the
maximum length of the values they can hold



For more information about MySQL BLOBs check out http://www.mysql.net/Manual_c
hapter/manual_Reference.html#BLOB

Use the next syntax to create a basic table that will hold the images:

CREATE TABLE Images (
PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Image BLOB
);

Setting the upload script


An example of a file upload front end can be seen at File Uploading by berber
(29/06/99). What we need now is the PHP script that will get the file and
insert it into MySQL. The next script does just that. In the script, I'm
assuming that the name of the file field is "Picture".


<?
If($Picture != "none") {
$PSize = filesize($Picture);
$mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize));
unlink($Picture);
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("Can't Perform Query");
}
else {
echo"You did not upload any picture";
}
?>

This is all that is needed to enter the image into the database. Note that in
some cases you might get an error when you try to insert the image into
MySQL. In such a case you should check the maximum packet size allowed by
your MySQL ver. It might be too small and you will see an error about this in
the MySQL error log.

What we did in the above file is :

1. Check if a file was uploaded with If($Picture != "none").
2. addslashes() to the picture stream to avoide errors in MySQL.
3. Delete the temporary file.
3. Connect to MySQL, choose the database and insert the image.




Displaying the Images


Now that we know how to get the images into the database we need to figure
out how to get them out and display them. This is more complicated than
getting them in but if you follow these steps you will have this up and
running in no time.

Since showing a picture requires a header to be sent, we seem to be in an
impossible situation in which we can only show one picture and than we can't
show anymore Since once the headers are sent we can't send any more headers.


This is the tricky part. To outsmart the system we use two files. The first
file is the HTML template that knows where we want to display the image(s).
It's a regular PHP file, which builds the HTML that contains the <IMG> tags,
as we want to display them. The second file is called to provide the actual
file stream from the database directly into the SRC property of the <IMG>
tag.

This is how a simple script of the first type should look like:




<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");
mysql_query("SELECT * FROM Images")
or die("Can't Perform Query");
While($row=mysql_fetch_object($result)) {
echo "<IMG SRC=\"SecondType.php3?PicNum=$row->PicNum\">";
}
?>
</BODY>
</HTML>



While the HTML is being displayed, the SecondType.php3 file is called for
each image we want to display. The script is called with the Picture ID
(PicNum) which allows us to fetch the image and display it.

The SecondType.php3 file looks like this :




<?
$result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum")
or die("Can't perform Query");
$row=mysql_fetch_object($result);
Header( "Content-type: image/gif");
echo $row->Image;
?>


This is the whole theory behind images and MySQL. The scripts in this example
are the basics. You can now enhance these scripts to include thumbnails, set
the images in various positions, enhance the database table to hold an ALT
field, Check the width and height of the images before you insert them into
the database and keep that data in the table too etc...


--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.117.17.24]

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧