主页
软件技术
返回
通过PHP操作SQLServer数据库

        通过PHP操作SQL Server数据库

        1、连接SQL Server数据库

        虽然PHP+MySQL进行网络开发是最佳的选择,但是对于已经熟悉并掌握了SQL Server的读者来说,可能会使用SQL Server作为网站后台数据库,这时,就需要通过使用PHP来连接SQL Server数据库。

        PHP同SQL Server数据库的连接步骤同MySQL基本类似,而且函数结构及声明也基本类似,如MySQL连接服务器的函数是mysql_connect(),而连接SQL Server的函数是mssql_connect(),只要将mysql替换成mssql即可。

        在默认情况下,是不能连接SQL Server数据库的。为了能够连接SQL Server数据库,必须修改php.ini文件的设置(在更改文件前需要去除该文件的只读属性),将“extension=php_mssql.dll”语句前面的分号删除,如图9.18所示,然后,重新启动Apache服务器。

        mssql_connect()函数用于连接SQL Server服务器,该函数的语法如下: resource mssql_connect([string servername[,string username[,string password]]]);

        其中,参数servername表示服务器名称;username表示用户名;password表示密码。

        例如,用户连接本机SQL Server服务器的代码如下:

        $link=mssql_connect("localhost","sa","");

        2、图书信息查询

        PHP操纵SQL server数据库用到了MySQL函数库中的相关函数,下面对这些函数进行介绍。

        1)、mssql_connect()函数

        该函数用于建立数据库的连接。语法如下:

        resource mssql_connect(string [servername], string [username], string [password]);

        2)、mssql_select_db()函数

        该函数用于选择数据库文件。语法如下:

        resource mssql_select_db(string database_name, int link_identifier]);

        3)、mssql_query()函数

        该函数用于查询字符串。语法如下:

        resource mssql_query(string query, int plink_identifier));

        4)、mssql_fetch_array()函数

        该函数用于将查询结果result分割到数组变量中。语法如下:

        resource array mssql_fetch_array(int result);

        5)、mssql_close()函数

        该函数用于关闭与数据库的连接。语法如下:

        boolean mssql_close(int [link_identifier]);

        信息查询在动态网站开发过程中应用最为广泛。下面这个范例主要介绍PHP与SQL Server进行数据库的操作。  

        本范例通过接收文本框传递的值赋值给session变量,来检索与之匹配的图书信息(支持模糊查询),单击【查询】按钮,即可将符合图书名称的图书信息显示在浏览器中,运行结果如图所示。

        

        图书信息查询

        本范例的实现过程如下。

        (1)首先,利用包含文件命令include引用数据库配置文件“conn.php”,代码如下:

        <?php

        include "conn.php";

        ?>

        在“conn.php”文件中,主要应用mssql_connect()函数和mssql_select_db()函数建立数据源的连接,代码如下:

        <?php

        $conn=mssql_connect("localhost","sa","");

        mssql_select_db("DB_Book",$conn); ?>

        (2)创建记录集。首先,通过表单判断用户是否单击了【查询】按钮,然后,通过接收文本框传递的值赋值给session变量,再利用查询语句检索符合条件的数据信息。最后,利用if条件语句判断记录集是否为空,如果为空,输出提示信息“对不起,您检索的图书信息不存在!”,否则,利用Do„while循环语句将符合条件的信息输出到浏览器中,程序完整代码如下:

        <?php

        if ($_POST["Submit"]!=""){

        session_start();

        $_SESSION[txt_book]=$_POST[txt_book];

        ?>

        <table width="92%" border="1">

        <tr bgcolor="#DEEFF7">

        <td>编号</td><td>图书名称</td><td>发行日期</td><td>单价</td><td width="100">内容介绍</td>

        <td>作者</td><td>出版社</td></tr>

        <?php

        $sql=mssql_query("select * from tab_book where bookname like '%$_SESSION[tx

        t_book]%'");

        $info=mssql_fetch_array($sql);

        if($info==False){

        echo "对不起,您检索的图书信息不存在!";

        }

        else{

        do{

        ?>

        <tr>

        <td> <?php echo $info[id];?> </td>

        <td width="180"> <?php echo $info[bookname];?> </td>

        <td> <?php echo $info[issueDate];?> </td>

        <td> <?php echo $info[price];?></td>

        <td width="260"> <?php echo $info[Synopsis];?></td>

        <td> <?php echo $info[Maker];?></td>

        <td> <?php echo $info[Pulisher];?></td>

        </tr>

        <?php

        }

        while($info=mssql_fetch_array($sql));

        mssql_close(); //关闭数据库连接

        }

        }

        ?>

        </table>

        3、 图片分栏显示

        在图片信息较多的页面中,将图片进行分栏显示可以使整个页面布局清晰,下面结合具体范例介绍图片分栏的技术。

        在开发信息资源网站时,对资源信息的显示方法有多种,如分页显示、跳转页码显示等,本范例主要介绍分栏显示信息的方法,运行结果如图所示。

        

        图片分栏显示

        首先建立数据库连接文件,该文件代码如下:

        <!--****************************conn/conn.php***************************** ******-->

        <?php

        $conn=mssql_connect("localhost","sa",""); //连接数据库服务器

        mssql_select_db("DB_mrbook",$conn); //选择数据库"DB_mrbook" ?>

        下面开始具体实现商品的分栏显示:

        <!--*********************************index.php***********************************-->

        <? php

        include "conn/conn.php"; //包含数据库连接文件 ?>

        ……

        <?php

        $sql=mssql_query("select * from tb_writer where writer_type='平面设计' order by wr

        iter_data asc",$conn); //从数据库中查询图片信息

        ?>

        ……

        <?php

        $i=1; //用变量$i控制图片分栏

        while($result=mssql_fetch_array($sql)) //通过循环遍历所有记录

        {

        if ($i % 5==0) //如果$i能被5整除,则显示下一栏图片

        {

        ?>

        <td height="25">

        <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="<?php

        echo "./writer/". $result [writer_img];?>" width="76" height="110" border="0">&nb

        sp;</div>

        </td>

        </tr>

        <?php

        }

        else //否则显示本栏图片

        {

        ?>

        <td height="25"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img s

        rc="<?php echo "./writer/". $result[writer_img];?>" width="76" height="110" border

        ="0">&nbsp;</div>

        </td>

        <?php

        }

        $i++; //显示一幅图片后使$i加1

        }

        ?>

        ……

        4、 留言板

        PHP操纵SQL Server,除了可以利用PHP自身的函数外,还可以利用ADO的方法操纵SQL Server数据库,下面将以留言板为例介绍PHP利用ADO的方法操纵SQL server数据库的实现过程。  

        在开发网站程序设计时,有很多的网站里都设有留言板模块。该模块主要用于方便用户在网站内进行留言。留言板模块包括查看留言、签写留言、管理留言。运行本范例,用户单击“查看留言”超级链接,浏览留言信息,运行结果如图所示。

        

        留言板页面的运行结果

        为了减少代码重用率,同样建立conn.php来连接SQL server数据库,代码如下:

        <!--******************************conn.php**************************************-->

        <?php

        $conn=new com("adodb.connection"); //创建数据库连接对象 $connstr="provider=sqloledb;data source=localhost;uid=sa;pwd=;database=guestbook"; //设置数据库连接驱动

        $conn->open($connstr); //调用数据库连接对象的open()方法来执行驱动,从而与数据库建立连接

        ?>

        上述代码中的data source的值为数据库服务器的名称,uid的值为某用户名,pwd的值为用户密码,database的值为某数据库名。有了conn.php为基础,就可以通过分页来显示所有留言信息了。代码如下:

        <!--******************************index.php**************************************-->

        <?php

        include_once("top.php"); //包含首部导航栏

        ?>

        ……

        <?php

        include_once("conn.php"); //包含数据库连接文件

        $rs=new com("adodb.recordset"); //建立记录集对象

        $sql="select * from word order by shijian desc";

        $rs->open($sql,$conn,3,1); //执行查询

        if($rs->eof || $rs->bof) //如果记录集指针的位置在第一行以前或在最后一行以后,此时说明记录集中无内容

        {

        ?>

        <tr>

        <td height="20" colspan="5" >暂无留言</td>

        </tr>

        <?php

        }

        else

        {

        if($_GET[page]=="" || is_numeric($_GET[page]==false))

        {

        $page=1; //获取查询字符串的值,为下面翻页所用

        }

        else

        {

        $page=intval($_GET[page]);

        }

        $rs->pagesize=5; //设置每页显示5条留言

        $rs->absolutepage=$page; //设置当前显示第几页

        $mypagesize=$rs->pagesize; //用$mypagesize来控制每页循环显示

        while(!$rs->eof && $mypagesize>0)

        {

        ?>

        ……

        本站共有留言<?php echo $rs->recordcount;?>条&nbsp;每页显示<?php echo $rs->pagesize;?>条&nbsp;第<?php echo $page;?>页/共<?php echo $rs->pagecount;?>页

        <?php

        if($page>=2) //下面代码用于实现翻页显示

        {

        ?>

        <a href="index.php?page=1" title="首页"><font face="webdings"> 9 </font></a>

        <a href="index.php?page=<?php echo $page-1;?>" title="前一页"><font face="webdings"> 7 </font></a>

        <?php

        }

        if($rs->pagecount<=4)

        {

        for($i=1;$i<=$rs->pagecount;$i++)

        {

        ?>

        <a href="index.php?page=<?php echo $i;?>"><?php echo $i;?></a>

        <?php

        }

        }

        else

        {

        for($i=1;$i<=4;$i++)

        {

        ?>

        <a href="index.php?page=<?php echo $i;?>"><?php echo $i;?></a>

        <?php

        }

        ?>

        <a href="index.php?page=<?php

        if($rs->pagecount>=$page+1)

        echo $page+1;

        else

        echo 1;

        ?>" title="后一页"><font face="webdings"> 8 </font></a>

        <a href="index.php?page=<?php echo $rs->pagecount;?>" title="尾页"><font face="webdings"> : </font></a>

        <?php

        }

        ?>

        </div></td>

        </tr>

        </table>

        <?php

        include_once("bottom.php");

        通过以上代码,用户可以掌握PHP利用ADO的方式操纵SQL Server数据库的实现方法,该留言板的其他功能及详细代码请参看本书附带光盘。

        


工程项目管理的三控制
房地产项目的规划设计管理(1)
2015年一级建造师《专业工程管理与实务》复习资料(58)
浅谈如何有效的进行工程造价的控制
2015年一级建造师考试《法规及相关知识》辅导资料(4)
建筑工程:如何确保施工质量
建筑工程:建设工程施工项目管理心得
秦佑国:城市建设中的文化问题
信息发布:名易软件http://www.myidp.net