好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP新手上路(十一) 数据库链接

数据库链接

 10. PHP最大的特色就是操作数据库的能力特别的强大,PHP提供对多种数据库的支持。

通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。在这一节里我们主要以在互联网上跟PHP一起使用得最多的MySQL数据库为例,介绍一下相关的MySQL数据库的操作函数以及数据库的基本操作等方面的知识。

在MySQL数据库中,我们用来连接数据库的函数有两个,它们分别为:

integer mysql_connect(string host,string user,string password);

integer mysql_pconnect(string host,string user,string password);

mysql_connect函数和mysql_pconnect函数都是对指定主机上MySQL数据库的连接,如果该数据库位于一个不同的端口,则可以在主机名后加上冒号和端口号。函数的参数也可以缺省不填,如果不填参数,默认的主机名是[localhost],用户名为数据库管理员,默认值为[root],密码为空。与数据库连接成功之后,这两个函数都可以返回一个连接号,如果连接失败,则返回一个false值。让我们来看看下面几句语句:

<?   $db =mysql_connect( "localhost" , "user" , "password" );   mysql_select_db( "mydb" , $db );   ?> 

注释:

$db=mysql_connect("localhost","user","password"); 我们将mysql的链接参数,包括主机名、用户名和密码作为mysql_connect()的参数,同时得到返回值为$db,这样,在下面的语句中,我们就可以将变量$db作为一个连接mysql数据库的连接号来使用。

mysql_select_db("mydb",$db); 将PHP程序链接到mydb数据库中,这样程序与数据库的链接就完成了。

10.1 一个简易的数据库留言簿

在完成数据库的链接之后,我们就可以对数据库进行一系列的操作。下面是一个简易的数据库留言簿程序(guestbook.php3):

我假设你机子上的MySQL数据库以及管理MYSQL数据库的工具 Phpmyadmin_2. 0.5都已经安装完成,并且可以正常工作。

我们要做的第一件事情是创建一个留言数据库,假定名字为: mydb。

1、启动浏览器,打开Phpmyadmin_2. 0.5 的管理WEB界面。

2、在[Create new database]文本框内输入数据库名称mydb,然后按create按键。

下一步,我们要在该留言数据库下创建一个数据表,假定名字为:  guestbook 。

创建该数据表的命令如下所示:

CREATE TABLE guestbook (ID INT NOT NULL AUTO_INCREMENT, name CHAR(250), email CHAR(250), job CHAR(250), comments BLOB, PRIMARY KEY(ID)); 

最后,将下面的留言簿程序挎贝到你机子的可写目录下面,并保存成guestbook.php3文件。就这么简单,你已经有了自己的留言簿了。

10.2 留言簿程序(guestbook.php3):

<?php   /* $host : your MySQL-host, usually 'localhost' */   /* $user : your MYSQL-username */   /* $password : your MySQL-password */   /* $database : your MySQL-database */   /* $table : your MySQL-table */   /* $page_title : the title of your guestbook-pages */   /* $admin_mail : email-address of the administrator to send the new entries to */   /* $admin_name : the name of the administrator */   /* $html_mail : say yes if your mail-agent can handle HTML-mail, else say no */     $host =  "localhost" ;   $user =  "" ;   $password =  "" ;   $database =  "mydb" ;   $table =  "guestbook" ;   $page_title =  "pert guestbook" ;   $admin_mail =  "pert@21cn测试数据" ;   $admin_name =  "Webmaster" ;   $html_mail =  "no" ;     ?>   <HTML>   <HEAD>   <TITLE><?php echo $page_title; ?></TITLE>   </HEAD>   <BODY BGCOLOR= "#FFFFFF"  LINK= "#000000" >   <FONT FACE= "Verdana"  SIZE= "-2" >   <?     /* connect to the database */   mysql_pconnect( "$host" , "$user" , "$password" ) or die( "Can't connect to the SQL-server" );   mysql_select_db( "$database" );     /* action=view : retrieve data from the database and show it to the user */   if ($action ==  "view" ) {     /* function for showing the data */   function  search_it($name) {     /* some vars */   global $offset,$total,$lpp,$dir;   global $table,$html_mail,$admin_name,$admin_mail;     /* select the data to get out of the database */   $query =  "SELECT name, email, job, comments FROM $table" ;   $result = mysql_query($query);   $total= mysql_numrows($result);     print  "<CENTER><FONT FACE=" Verdana " SIZE=" -2 "><A HREF=" guestbook.php3?action=add " onMouseOver=" window.status= 'Add your name' ; return   true " onMouseOut=" window.status= '' ; return   true " TITLE=" Add your name ">加入留言</A></FONT></CENTER><br><br>" ;     if  ($total== 0) {   print  "<CENTER>此刻没人留言</CENTER><br><br>" ; }     elseif ($total> 0) {     /* default */   $counter=0;   if  ($dir== "" ) $dir= "Next" ;   $lpp=5;   if  ($offset==0) $offset=0;     if  ($dir== "Next" ) {     if  ($total > $lpp) {     $counter=$offset;   $offset =$lpp;   $num=$offset;     if  ($num > $total) {   $num=$total; } }     else  {   $num=$total; } }     elseif ($dir== "Previous" ) {     if  ($total > $lpp) {   $offset-=$lpp;     if  ($offset < 0) {   $offset=0; }     $counter=$offset-$lpp;     if  ($counter < 0)   $counter=0;   $num=$counter $lpp; }     else  {   $num=$total; } }     while  ($counter < $num) {   $j=0;   $j=$counter 1;     /* now really grab the data */   $i1=mysql_result($result,$counter, "name" );   $i2=mysql_result($result,$counter, "email" );   $i3=mysql_result($result,$counter, "job" );   $i4=mysql_result($result,$counter, "comments" );     $i4 = stripslashes ( "$i4" );     /* print it in a nice layout */   print  "<CENTER>n" ;   print  "<TABLE WIDTH=400 BORDER=0 ALIGN=CENTER VALIGN=TOP><TR><TD><FONT FACE=" Verdana " SIZE=" -2 ">n" ;   print  "<HR>n" ;   print  "<BR><B>Name:</B> $i1n" ;   print  "<BR><B>email:</B><A HREF=" mailto:$i2 " onMouseOver=" window.status= 'Email $i2' ; return   true " onMouseOut=" window.status= '' ; return   true " TITLE=" Email $i2 ">$i2</A>n" ;   print  "<BR><B>Job:</B> $i3n" ;   print  "<BR><B>Comment:</B>n" ;   print  "<BR>$i4n" ;   print  "</FONT></TD></TR></TABLE>n" ;   print  "</CENTER>n" ;   $counter ;   }   }   mysql_close();   }     /* execute the function */   search_it($name);     /* See if we need to put on the NEXT or PREVIOUS buttons */   if  ($total > $lpp) {   echo( "<form action=" $PHP_SCRIPT " method=" POST ">n" );     /* See if we need a PREVIOUS button */   if  ($offset > $lpp) {   echo( "<input type=" submit " value=" Previous " name=dir>n" ); }     /* See if we need a NEXT button */   if  ($offset < $total) {   echo( "<input type=" submit " value=" Next " name=dir>n" ); }     echo( "<input type=hidden name=" offset " value=" $offset ">n" );   echo( "<input type=hidden name=" name " value=" $name ">n" );   echo( "</form>" );   }   }     /* action=add : show a form where the user can enter data to add to the database */   elseif($action ==  "add" ) { ?>     <TABLE WIDTH= "460"  ALIGN= "CENTER"  VALIGN= "TOP" >   <TH COLSPAN= "2" ><P>请您填写留言</TH>   <FORM NAME= "guestbook"  ACTION= "guestbook.php3?action=send"  METHOD= "POST" >   <TR>   <TD ALIGN= "RIGHT"  VALIGN= "TOP" >   您的大名:</TD>   <TD><INPUT TYPE=text NAME=name></TD>   </TR>   <TR>   <TD ALIGN= "RIGHT"  VALIGN= "TOP" >   您的E-mail:</TD>   <TD>   <INPUT TYPE=text NAME=email></TD>   </TR>   <TR>   <TD ALIGN= "RIGHT"  VALIGN= "TOP" >   您的工作:</TD>   <TD>   <INPUT TYPE=text NAME=job></TD>   </TR>   <TR>   <TD ALIGN= "RIGHT"  VALIGN= "TOP" >   您的留言:</TD>   <TD>   <TEXTAREA NAME=comments COLS=40 ROWS=6></TEXTAREA>   <P>   <INPUT TYPE=submit VALUE=Submit> <INPUT TYPE=Reset VALUE=Reset>   <A ALIGN= "RIGHT"  HREF= "guestbook.php3?action=view"  onMouseOver= "window.status='Read all comments first';return true"  onMouseOut= "window.status='';return true"  TITLE= "Read all comments first" ><FONT SIZE= "-2" >先观看所有的留言</FONT></A>   </TD>   </TR>   </FORM>   </TABLE>   </CENTER>     <?   }     /* action=send : add the data from the user into the database */   elseif($action ==  "send" ) {     /* check if a HTML-mail should be send or a plain/text mail */   if ($html_mail ==  "yes" ) {   mail( "$admin_name <$admin_mail>" , "PHP3 Guestbook Addition" , "<HTML><BODY><FONT FACE=" Century Gothic "><TABLE BORDER=" 0 " WIDTH=" 100% " CELLSPACING=" 4 "><TR>$name ($email) schreef het volgende bericht in het gastenboek :</TR><TR><TD ALIGN=" LEFT "> </TD><TD ALIGN=" LEFT " NOWRAP> </TD></TR><TR><TD ALIGN=" LEFT ">$comments</TD><TD ALIGN=" LEFT " NOWRAP> </TD></TR><TR><TD ALIGN=" LEFT "> </TD><TD ALIGN=" LEFT " NOWRAP> </TD></TR><TR><TD ALIGN=" LEFT ">您的留言:</TD><TD ALIGN=" LEFT " NOWRAP>$name</TD></TR><TR><TD ALIGN=" LEFT ">您的大名:</TD><TD ALIGN=" LEFT " NOWRAP>$email</TD></TR><TR><TD ALIGN=" LEFT ">您的email:</TD><TD ALIGN=" LEFT " NOWRAP>$job</TD></TR><TR><TD ALIGN=" LEFT ">您的工作:</TD></TR></TABLE></BODY></FONT></HTML>" ,  "From: $name <$email>nReply-To: $name <$email>nContent-type: text/htmlnX-Mailer: PHP/"  . phpversion());   }   /* MySQL really hates it when you try to put things with ' or " characters into a database, so strip these...*/   $comments = addslashes ( "$comments" );   $query =  "INSERT INTO guestbook VALUES('','$name', '$email', '$job', '$comments')" ;   $result = MYSQL_QUERY($query);     ?>   <BR><P ALIGN = CENTER>感谢, <?php echo $name; ?>, 您的留言.   <BR><P ALIGN = CENTER><A HREF= "guestbook.php3?action=view"  onMouseOver= "window.status='View your comment now';return true"  onMouseOut= "window.status='';return true"  TITLE= "View your comment now" >观看留言</A><BR><BR>   <?     }   /* if there's no action given, then we must show the main page */   else  {     /* get the number of entries written into the guestbook*/   $query =  "SELECT name from guestbook" ;   $result = MYSQL_QUERY($query);   $number = MYSQL_NUMROWS($result);     if  ($number ==  "" ) {   $entry =  "还没有人留过言" ; }     elseif ($number ==  "1" ) {   $entry =  "目前留言人数1人" ; }     else  {   $entry =  "目前留言人数 $number 人" ; }     echo  "<CENTER><BR>" ;   echo  "<P>$entry<BR>" ;   echo  "<H4><FONT FACE=" Verdana " SIZE=" 3 "><A HREF=" guestbook.php3?action=add " onMouseOver=" window.status= '请您留言' ; return   true " onMouseOut=" window.status= '' ; return   true " TITLE=" Add your name to our guestbook ">请您留言</A></FONT></H4>" ;     if  ($number >  "" ) {   echo  "<H4><FONT FACE=" Verdana " SIZE=" 3 "><A HREF=" guestbook.php3?action=view " onMouseOver=" window.status= '观看留言' ; return   true " onMouseOut=" window.status= '' ; return   true " TITLE=" View the names  in  our guestbook ">观看留言</A></FONT></H4>" ; }   echo  "</P></CENTER>" ;   }   ?>   <BR><SMALL><CENTER>版权所有:<A HREF= "http://personal.668.cc/haitang/index.htm"  onMouseOver= "window.status='pert';return true"  onMouseOut= "window.status='';return true"  TITLE= "pert" >无边天际</A></CENTER></SMALL>   </FONT>   </BODY>   </HTML> 

 

 

查看更多关于PHP新手上路(十一) 数据库链接的详细内容...

  阅读:30次