189 8069 5689

数据库php实验体会,php实验实践总结

php的优点总结 php有哪些优点

PHP优点:

创新互联建站于2013年开始,先为兴安等服务建站,兴安等地企业,进行企业商务咨询服务。为兴安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

1.入门快,有其它语言基础的程序员二周左右的时间就可以入门,一个月左右的时间基本上就可以开发简单的项目了。

2.开发成本低,PHP最经典的组合就是:Linux + Apache + MySQL + PHP。非常适合开发中小型的web应用,因为上手容易,所以开发的速度比较快。而且所有的软件都是开源免费的,可以减少投入。

3.PHP是解释性的脚本语言,写完代码以后即可以执行,不像c,java,c++等语言还需要去编译执行,相对来说比较节省时间。

4.相对来说,PHP程序员的薪水的平均工资要比c,c++,java程序员的平均工资要低一些,特别是对于中小型企业来说可以节约一些成本。

5.配置及部署相对简单一些,对比JAVA开发来说,JAVA开发的配置就复杂多了,什么Structs、Spring、Hibernate、Tomcat等等很多地方都需要配置,甚至你在程序中每写一个SQL语句都需要先在Hibernate中配置一下,有时重新部署一个class文件或jar文件还可能需要重启Web服务器(Tomcat或Resin或其它的Web服务器)使新部署的库文件生效。

PHP开发中主要是PHP自身的配置文件及Web服务器的配置(如Apache或Nginx或Lighttpd等),相对于JAVA来说还是简单一些,而且新修改了文件以后不需要重新启动Web即可以立即生效。

6.有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony、thinkphp等,开源论坛有Discuz!、Phpwind等,开源博客WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。

内容扩展

1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库。(N = 10)

2. 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。

3. 目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。

4. 有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。

5. 有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。

6. PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。

7. 有成熟的社区来支持PHP的开发。

8. 目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。

9. 有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客 WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。

简述php的特点及作用

PHP是一种服务器端、跨平台、html嵌入式的脚本语言。

执行速度快:PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页比CGI、Perl和ASP更快,这是它的第一个突出的特点。

扩展资料:

PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。

在服务器端的网站编程中PHP会更容易帮助你找到工作。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。

参考资料来源:百度百科-PHP (超文本预处理器)

数据库课程设计心得3篇

数据库课程设计心得 范文 1: 在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次的课程设计,可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基本 方法 ,进一步提高我们综合运用所学知识的能力。

当我们这组决定做大学生就业咨询系统时,我们并没有着手写程序。而是大家一起商量这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典。当这些都准备好了之后,我们进行模块的分工。每个人都有自己的模块设计,而且写出来的代码要求可以实现相应模块的功能,得到理想的效果。当每个人都把自己的分工做好了,最后会由一个人把这些全部组合搭建在一起。我们使用的是Html和php相互嵌套使用,当一个系统做好了之后,我会好好地把程序都看一遍,理会其中的奥秘。

我所负责的是数据库的备份和还原还有一些界面的实现。还记得自己刚接触html的时候,觉得很感兴趣,所以有一段时间几乎到了痴迷的程度。然而Php是我刚接触不久的一种编程语言。不过觉得它的功能真的很强大,可以开发出很多大型的系统。但是在做备份和还原的时候,要考虑的东西还是很多的。当我遇到错误的时候,感到很受打击。值得欣慰的是,在同学的帮助和大量参考书的查阅下,我把自己的模块做好了。这就是我收获最大的地方。而且,我明白了遇到困难永不放弃的重要性,我知道了团队合作的重要性,我领悟了只有坚持不懈才会取得胜利。

知识的获得是无止境的,只要你想学,只要你行动,没有什么会难倒我们的。回首这一个多星期的课程设计,我很欣慰。因为我有了动力,有了勇气。谢谢老师对我们的不懈帮助,谢谢学校给了我们这一次实践的机会,也谢谢组员们的关怀。这些美好的回忆美好的东西将永远伴随着我。

数据库课程设计心得范文2:

一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在设计过程中,和同学们相互探讨,相互学习,相互监督。我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古 名言 的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。我这次设计的科目是数据结。

数据结构,是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。作为一门独立的课程在国外是从20XX年才开始设立的。20XX年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、 操作系统 、数据库系统及其他系统程序的重要基础。

通过这次模具设计,我在多方面都有所提高。

一、编译工具VisualC++

很多程序在结构上是独立的,但是本此设计的程序功能不是零散的,它有一个连接是的程序是一个整体,怎样达到这种统一体呢?因为这个输出连接是贯穿始终的。说到这,就应该说以下我所应用的调试工具,也就是运行环境VisualC++,可以充分利用Windows的支持剪贴版和英文的特点。正是在实现循环链表的程序中充分利用这个特点,才能制作出全汉化的初始化画面。

二、巩固和温习了C语言

在界面设置中使用函数调用while。其中文本显示颜色和背景颜色都可以任意按照自己的喜好,任意改变,但改变的时候必须采用标准英文大写,同时在制作显示菜单的窗口,大小根据菜单条数设计。最后采用printf输出程序设计界面。

这次的程序软件基本上运行成功,可以简单的建立链式循环链表,并进行输出,及循环语句的运用和选择语句的控制。由于时间和知识上的限制,使得程序规模相对较小,即功能还不很全面,应用也不很普遍。原来C语言可是涉及很多知识,而不是枯燥无聊的简单的代码部分而已,利用C语言方面的知识,我们可以设计出更完善的软件。

三、积累了宝贵的 经验

我这次课程设计代码中主要使用了链表的循环和遍历这两中操作。循环链表(CircularLinkedList)是单链表的另一种形式,它是一个首尾相接的链表。其特点是将单链表最后一个结点的指针域由NULL改为指向头结点或线性表中的第一个结点,就得到了单链形式的循环链表,并称为循环单链表。类似地,还有多重链的循环链表。在循环单链表中,表中所有结点被链在一个环上,多重循环链表则是将表中的结点链在多个环上。为了使某些操作实现起来方便,在循环单链表中也可设置一个头结点。这样,空循环链表仅由一个自成循环的头结点表示。所谓遍历(Traversal),是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。

这次课程设计我选中的题目是个人资料的管理。编写了一个可以简易使用的个人资料管理系统,可以进行资料的输入和管理。虽然在我的程序中有一部分是从网上搜索得来的,但我已经竭力将所获得的信息变成自己的资源,动手上机操作,在了解和看懂的基础上有所改变和创新,但是在的程序软件中还有部分的不足,需要加以更新。仅管,我并没能很好的利用所学数据结构的知识,但我也尽了自己最大的努力用我所学来完成这次的课程设计。同时,通过这次课程设计,我认识到了自己动手实践的弱势,特别是在编程方面,知道了计算机的实践操作是很重要的,只有通过上机编程才能充分的了解自己的不足。

四、对以后的学习充满了信心和期待

通过这次的课程设计,更是让我深刻认识到自己在学习中的不足,同时也找到了克服这些不足的方法,这也是一笔很大的资源。在以后的时间中,我们应该利用更多的时间去上机实验,加强自学的能力,多编写程序,相信不久后我们的编程能力都会有很大的提高能设计出更多的更有创新的作品。

数据库课程设计心得范文3:

数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开始写这篇 文章 ,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹并期望与大家共勉。

首先,让我的记忆追溯到大二暑假,在老大的指引下(老大劝我学asp.net),我接触到microsoft 公司的.net产品。那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub,var 看着就不是很顺心。我是一个好奇心很强的人,突然看到了一个号称“.net是用于创建下一代应用程序的理想而又现实的开发工具”,而且主推c#语言,由于对c语言的一贯好感,我几乎是立刻对他产生了兴趣。我就开始了对c#的学习,任何语言都不是孤立存在的,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一遍。我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。很耗费内存空间。这个时候就是数据库站出来的时候啦,于是我又装上了sql server2000,以前学asp的时候用的是access,那个时候只是照着人家做,理论是什么也不是很清楚。

通过一个暑假的学习,基本搞清楚了理论方面的东西,具体怎么用也不是很清楚。但是这为这学期的课程设计打下了铺垫。

来到学校后,随着这学期的数据库课程大赛开始了,我有一个看法就是我自己应该具备的能力不是我会多少,而是我应该具备快速学会东西的能力。遇到什么就学什么。我们有时候很容易被一些专业名词说吓着,包括什么建模,软件工程,数据分析,数据挖掘等等。我身边就有很多同学被这些纸老虎所唬住,而没有勇气去接触他们,总是说这个太难了之类的退堂鼓的话,他们低估了自己的潜力同时也压抑住了他们自己的好奇心。其实都是纸老虎,又不是什么国家科研难题,只是去用一些工具,发明工具是很难,但是用一个工具就容易多了,just do it!我记得我做这个数据库之前,我们老师说要做好前期分析,我就在网上搜索用什么分析工具好。最后我选择了roseuml建模工具。在此之前,我脑袋里面没有软件建模的思想,什么uml建模对我而言就是一张空白的纸。但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,baidu就没有不能解决的知识难题。以及后来的数据库分析的时候用到的powerdesigner也是一样。

开发的时候我想过用什么架构,c/s模式?模式有很多,怎么选择?我就上网搜索现在最流行的架构是什么。结果搜到了mvc架构,就是你啦。我决定用这个架构,不会,没关系,咱学。just do it!前期工作准备好后,那么我就得把我暑假学的.net加以实践。这个时候我更加深入的了解了利用ado.net操纵数据库的知识。并且对数据库里面的存储过程有了比较深入的了解。经过大概2个多星期的奋斗,我完成了我的数据库课程设计--基于.net数据集的图书馆管理系统。并最后非常荣幸的获得了大赛的一等奖以及以及新技术应用奖。

与其临渊羡鱼,不如退而结网。这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次数据库课程设计,不过这只是我学习路上的驿站,未来十年.net的核心技术就是xml[至少微软是这么宣传的],我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,just do it!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊!

我很庆幸我参加了这次数据库大赛,让我确实打开了眼界。

学习PHP,环境为PHP5.2 和sqlserver 链接数据库正常,其中在查收某段代码时,和查询分析器里的结果不同

同步两个SQLServer数据库如何同步两个sqlserver数据库的内容?程序代码可以有版本管理cvs进行同步管理,可是数据库同步就非常麻烦,只能自己改了一个后再去改另一个,如果忘记了更改另一个经常造成两个数据库的结构或内容上不一致.各位有什么好的方法吗?一、分发与复制用强制订阅实现数据库同步操作.大量和批量的数据可以用数据库的同步机制处理://说明:为方便操作,所有操作均在发布服务器(分发服务器)上操作,并使用推模式在客户机器使用强制订阅方式。二、测试通过1:环境服务器环境:机器名称:zehuadb操作系统:windows2000server数据库版本:sql2000server个人版客户端机器名称:zlp操作系统:windows2000server数据库版本:sql2000server个人版2:建用户帐号在服务器端建立域用户帐号我的电脑管理-本地用户和组-用户-建立username:zlpuserpwd:zlp3:重新启动服务器mssqlserver我的电脑-控制面版-管理工具-服务-mssqlserver服务(更改为:域用户帐号,我们新建的zlp用户.\zlp,密码:zlp)4:安装分发服务器a:配置分发服务器工具-复制-配置发布、订阅服务器和分发-下一步-下一步(所有的均采用默认配置)b:配置发布服务器工具-复制-创建和管理发布-选择要发布的数据库(sz)-下一步-快照发布-下一步-选择要发布的内容-下一步-下一步-下一步-完成c:强制配置订阅服务器(推模式,拉模式与此雷同)工具-复制-配置发布、订阅服务器和分发-订阅服务器-新建-sqlserver数据库-输入客户端服务器名称(zlp)-使用sqlserver身份验证(sa,空密码)-确定-应用-确定d:初始化订阅复制监视器-发布服务器(zehuadb)-双击订阅-强制新建-下一步-选择启用的订阅服务器-zlp-下一步-下一步-下一步-下一步-完成5:测试配置是否成功复制监视器-发布衿?zehuadb)-双击sz:sz-点状态-点立即运行代理程序查看:复制监视器-发布服务器(zehuadb)-sz:sz-选择zlp:sz(类型强制)-鼠标右键-启动同步处理如果没有错误标志(红色叉),恭喜您配置成功6:测试数据在服务器执行:选择一个表,执行如下sql:insertintowq_newsgroup_sselect'测试成功',5复制监视器-发布服务器(zehuadb)-sz:sz-快照-启动代理程序-zlp:sz(强制)-启动同步处理去查看同步的wq_newsgroup_s是否插入了一条新的记录测试完毕,通过。7:修改数据库的同步时间,一般选择夜晚执行数据库同步处理(具体操作略):d/*注意说明:服务器一端不能以(local)进行数据的发布与分发,需要先删除注册,然后新建注册本地计算机名称卸载方式:工具-复制-禁止发布-是在"zehuadb"上静止发布,卸载所有的数据库同步配置服务器注意:发布服务器、分发服务器中的sqlserveragent服务必须启动采用推模式:"d:\microsoftsqlserver\mssql\repldata\unc"目录文件可以不设置共享拉模式:则需要共享~!*/少量数据库同步可以采用触发器实现,同步单表即可。三、配置过程中可能出现的问题在sqlserver2000里设置和使用数据库复制之前,应先检查相关的几台sqlserver服务器下面几点是否满足:1、mssqlserver和sqlserveragent服务是否是以域用户身份启动并运行的(.\administrator用户也是可以的)如果登录用的是本地系统帐户local,将不具备网络功能,会产生以下错误:进程未能连接到distributor'@servername'(如果您的服务器已经用了sqlserver全文检索服务,请不要修改mssqlserver和sqlserveragent服务的local启动。会照成全文检索服务不能用。请换另外一台机器来做sqlserver2000里复制中的分发服务器。)修改服务启动的登录用户,需要重新启动mssqlserver和sqlserveragent服务才能生效。2、检查相关的几台sqlserver服务器是否改过名称(需要srvid=0的本地机器上srvname和datasource一样)在查询分析器里执行:usemasterselectsrvid,srvname,datasourcefromsysservers如果没有srvid=0或者srvid=0(也就是本机器)但srvname和datasource不一样,需要按如下方法修改:usemastergo--设置两个变量declare@serverproperty_servernamevarchar(100),@servernamevarchar(100)--取得windowsnt服务器和与指定的sqlserver实例关联的实例信息select@serverproperty_servername=convert(varchar(100),serverproperty('servername'))--返回运行microsoftsqlserver的本地服务器名称select@servername=convert(varchar(100),@@servername)--显示获取的这两个参数select@serverproperty_servername,@servername--如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的--删除错误的服务器名execsp_dropserver@server=@servername--添加正确的服务器名execsp_addserver@server=@serverproperty_servername,@local='local'修改这项参数,需要重新启动mssqlserver和sqlserveragent服务才能生效。这样一来就不会在创建复制的过程中出现18482、18483错误了。3、检查sqlserver企业管理器里面相关的几台sqlserver注册名是否和上面第二点里介绍的srvname一样不能用ip地址的注册名。(我们可以删掉ip地址的注册,新建以sqlserver管理员级别的用户注册的服务器名)这样一来就不会在创建复制的过程中出现14010、20084、18456、18482、18483错误了。4、检查相关的几台sqlserver服务器网络是否能够正常访问如果ping主机ip地址可以,但ping主机名不通的时候,需要在winnt\system32\drivers\etc\hosts(win2000)windows\system32\drivers\etc\hosts(win2003)文件里写入数据库服务器ip地址和主机名的对应关系。例如:127.0.0.1localhost192.168.0.35oracledboracledb192.168.0.65fengyu02fengyu02202.84.10.193bj_dbbj_db或者在sqlserver客户端网络实用工具里建立别名,例如:5、系统需要的扩展存储过程是否存在(如果不存在,需要恢复):sp_addextendedproc'xp_regenumvalues',@dllname='xpstar.dll'gosp_addextendedproc'xp_regdeletevalue',@dllname='xpstar.dll'gosp_addextendedproc'xp_regdeletekey',@dllname='xpstar.dll'gosp_addextendedprocxp_cmdshell,@dllname='xplog70.dll'接下来就可以用sqlserver企业管理器里[复制]-右键选择-[配置发布、订阅服务器和分发]的图形界面来配置数据库复制了。下面是按顺序列出配置复制的步骤:1、建立发布和分发服务器[欢迎使用配置发布和分发向导]-[选择分发服务器]-[使"@servername"成为它自己的分发服务器,sqlserver将创建分发数据库和日志]-[制定快照文件夹]-[自定义配置]-[否,使用下列的默认配置]-[完成]上述步骤完成后,会在当前"@servername"sqlserver数据库里建立了一个distribion库和一个distributor_admin管理员级别的用户(我们可以任意修改密码)。服务器上新增加了四个作业:[代理程序历史记录清除:distribution][分发清除:distribution][复制代理程序检查][重新初始化存在数据验证失败的订阅]sqlserver企业管理器里多了一个复制监视器,当前的这台机器就可以发布、分发、订阅了。我们再次在sqlserver企业管理器里[复制]-右键选择-[配置发布、订阅服务器和分发]我们可以在[发布服务器和分发服务器的属性]窗口-[发布服务器]-[新增]-[确定]-[发布数据库]-[事务]/[合并]-[确定]-[订阅服务器]-[新增]-[确定]把网络上的其它sqlserver服务器添加成为发布或者订阅服务器.新增一台发布服务器的选项:我这里新建立的jin001发布服务器是用管理员级别的数据库用户test连接的,到发布服务器的管理链接要输入密码的可选框,默认的是选中的,在新建的jin001发布服务器上建立和分发服务器fengyu/fengyu的链接的时需要输入distributor_admin用户的密码。到发布服务器的管理链接要输入密码的可选框,也可以不选,也就是不需要密码来建立发布到分发服务器的链接(这当然欠缺安全,在测试环境下可以使用)。2、新建立的网络上另一台发布服务器(例如jin001)选择分发服务器[欢迎使用配置发布和分发向导]-[选择分发服务器]-使用下列服务器(选定的服务器必须已配置为分发服务器)-[选定服务器](例如fengyu/fengyu)-[下一步]-[输入分发服务器(例如fengyu/fengyu)的distributor_admin用户的密码两次]-[下一步]-[自定义配置]-[否,使用下列的默认配置]-[下一步]-[完成]-[确定]建立一个数据库复制发布的过程:[复制]-[发布内容]-右键选择-[新建发布]-[下一步]-[选择发布数据库]-[选中一个待发布的数据库]-[下一步]-[选择发布类型]-[事务发布]/[合并发布]-[下一步]-[指定订阅服务器的类型]-[运行sqlserver2000的服务器]-[下一步]-[指定项目]-[在事务发布中只可以发布带主键的表]-[选中一个有主键的待发布的表]-[在合并发布中会给表增加唯一性索引和rowguidcol属性的唯一标识符字段[rowguid],默认值是newid()](添加新列将:导致不带列列表的insert语句失败,增加表的大小,增加生成第一个快照所要求的时间)-[选中一个待发布的表]-[下一步]-[选择发布名称和描述]--[下一步]-[自定义发布的属性]-[否,根据指定方式创建发布]-[下一步]-[完成]-[关闭]发布属性里有很多有用的选项:设定订阅到期(例如24小时)设定发布表的项目属性:常规窗口可以指定发布目的表的名称,可以跟原来的表名称不一样。下图是命令和快照窗口的栏目(sqlserver数据库复制技术实际上是用insert,update,delete操作在订阅服务器上重做发布服务器上的事务操作看文档资料需要把发布数据库设成完全恢复模式,事务才不会丢失但我自己在测试中发现发布数据库是简单恢复模式下,每10秒生成一些大事务,10分钟后再收缩数据库日志,这期间发布和订阅服务器上的作业都暂停,暂停恢复后并没有丢失任何事务更改)发布表可以做数据筛选,例如只选择表里面的部分列:例如只选择表里某些符合条件的记录,我们可以手工编写筛选的sql语句:发布表的订阅选项,并可以建立强制订阅:成功建立了发布以后,发布服务器上新增加了一个作业:[失效订阅清除]分发服务器上新增加了两个作业:[jin001-dack-dack-5]类型[repl快照][jin001-dack-3]类型[repl日志读取器]上面蓝色字的名称会根据发布服务器名,发布名及第几次发布而使用不同的编号repl快照作业是sqlserver复制的前提条件,它会先把发布的表结构,数据,索引,约束等生成到发布服务器的os目录下文件(当有订阅的时候才会生成,当订阅请求初始化或者按照某个时间表调度生成)repl日志读取器在事务复制的时候是一直处于运行状态。(在合并复制的时候可以根据调度的时间表来运行)建立一个数据库复制订阅的过程:[复制]-[订阅]-右键选择-[新建请求订阅]-[下一步]-[查找发布]-[查看已注册服务器所做的发布]-[下一步]-[选择发布]-[选中已经建立发布服务器上的数据库发布名]-[下一步]-[指定同步代理程序登录]-[当代理程序连接到代理服务器时:使用sqlserver身份验证](输入发布服务器上distributor_admin用户名和密码)-[下一步]-[选择目的数据库]-[选择在其中创建订阅的数据库名]/[也可以新建一个库名]-[下一步]-[允许匿名订阅]-[是,生成匿名订阅]-[下一步]-[初始化订阅]-[是,初始化架构和数据]-[下一步]-[快照传送]-[使用该发布的默认快照文件夹中的快照文件](订阅服务器要能访问发布服务器的repldata文件夹,如果有问题,可以手工设置网络共享及共享权限)-[下一步]-[快照传送]-[使用该发布的默认快照文件夹中的快照文件]-[下一步]-[设置分发代理程序调度]-[使用下列调度]-[更改]-[例如每五分钟调度一次]-[下一步]-[启动要求的服务]-[该订阅要求在发布服务器上运行sqlserveragent服务]-[下一步]-[完成]-[确定]成功建立了订阅后,订阅服务器上新增加了一个类别是[repl-分发]作业(合并复制的时候类别是[repl-合并])它会按照我们给的时间调度表运行数据库同步复制的作业。3、sqlserver复制配置好后,可能出现异常情况的实验日志:1.发布服务器断网,sqlserver服务关闭,重启动,关机的时候,对已经设置好的复制没有多大影响中断期间,分发和订阅都接收到没有复制的事务信息2.分发服务器断网,sqlserver服务关闭,重启动,关机的时候,对已经设置好的复制有一些影响中断期间,发布服务器的事务排队堆积起来(如果设置了较长时间才删除过期订阅的选项,繁忙发布数据库的事务日志可能会较快速膨胀),订阅服务器会因为访问不到发布服务器,反复重试我们可以设置重试次数和重试的时间间隔(最大的重试次数是9999,如果每分钟重试一次,可以支持约6.9天不出错)分发服务器sqlserver服务启动,网络接通以后,发布服务器上的堆积作业将按时间顺序作用到订阅机器上:会需要一个比较长的时间(实际上是生成所有事务的insert,update,delete语句,在订阅服务器上去执行)我们在普通的pc机上实验的58个事务100228个命令执行花了7分28秒.3.订阅服务器断网,sqlserver服务关闭,重启动,关机的时候,对已经设置好的复制影响比较大,可能需要重新初试化我们实验环境(订阅服务器)从18:46分意外停机以,第二天8:40分重启动后,已经设好的复制在8:40分以后又开始正常运行了,发布服务器上的堆积作业将按时间顺序作用到订阅机器上,但复制管理器里出现快照的错误提示,快照可能需要重新初试化,复制可能需要重新启动.(我们实验环境的机器并没有进行快照初试化,复制仍然是成功运行的)4、删除已经建好的发布和定阅可以直接用delete删除按钮我们最好总是按先删定阅,再删发布,最后禁用发布的顺序来操作。如果要彻底删去sqlserver上面的复制设置,可以这样操作:[复制]-右键选择[禁用发布]-[欢迎使用禁用发布和分发向导]-[下一步]-[禁用发布]-[要在"@servername"上禁用发布]-[下一步]-[完成禁用发布和分发向导]-[完成]我们也可以用t-sql命令来完成复制中发布及订阅的创建和删除,选中已经设好的发布和订阅,按属标右键可以[生成sql脚本]。(这里就不详细讲了,后面推荐的网站内有比较详细的内容)当你试图删除或者变更一个table时,出现以下错误server:msg3724,level16,state2,line1cannotdropthetable'object_name'becauseitisbeingusedforreplication.比较典型的情况是该table曾经用于复制,但是后来又删除了复制。处理法:select*fromsysobjectswherereplinfo'0'sp_configure'allowupdates',1goreconfigurewithoverridegobegintransactionupdatesysobjectssetreplinfo='0'wherereplinfo'0'committransactiongorollbacktransactiongosp_configure'allowupdates',0goreconfigurewithoverridego

关于PHP数据库

PHP调用三种数据库的方法

本文比较详细的介绍PHP调用MySQL、ODBC以及ORACLE数据库。

MySQL是一个小巧灵珑的数据库服务器软件,对于中、小型应用系统是非常理想的。除了支持标准的ANSI SQL语句外,最重要的是,它还支持多种平台,而在Unix/Linux系统上,MySQL支持多线程运行方式,从而能获得相当好的性能。它和PHP、 Apache一样,是属于开放源代码软件。其官方网站是:,上面提供Windows,Linux,Unix版本的源代码的下载。

注意,MySQL访问函数都需要有相应的权限才能运行。常用的相关函数介绍如下:

(1)integer mysql_connect(主机,用户名,口令);

此函数开始一个对指定主机上的MySQL数据库的连接。若该数据库位于一个不同地端口,则在主机名后加上冒号和端口号。所有参数均为可选的,缺省情况下分别对应为本地主机、用户正在执行的脚本名和空。主机可以是IP地址或域名。

在脚本执行结束时,连接被自动关闭,也可以用mysql_close提前关闭。

(2)boolean mysql_create_db(数据库名);

创建一个数据库。注意必须用一个带有创建数据库许可权的帐号打开连接。

(3)boolean mysql_select_db(数据库名,连接号);

选择缺省数据库。

(4)integer mysql_query(SQL语句,连接号);

对指定数据库进行查询。如果SQL语句是select,则返回一个结果号,否则返回的值可以不理会。如果失败,返回false.。

(5)array mysql_fetch_array(结果号);

取出下一行,返回一个数组.可以用数字下标访问(第一个字段是下标 0),也可以用字符串下标访问(即使用各字段名)。如已取了最后一行,返回 false.。

(6)mysql_fetch_row(结果号);

返回一个矩阵代表结果集中一行的所有域。每次调用都会产生下一行,直到没有行剩下时返回false。每个域值都由一个从零开始的偏移量索引。这是从查询中获取结果的最快方法。

(7)integer mysql_num_rows(结果号);

返回结果集中行的数目

(8)integer mysql_num_fields(结果号);

返回结果集中域的数目。

(9)integer mysql_list_dbs();

向服务器查询数据库列表。它返回一个结果指针,该指针可用于mysql_fetch_row函数及类似函数。

(10)mysql_list_tables(数据库名);

获取一个指向指定数据库的表单列表的结果指针。该结果指针可用于任何从结果集中获取行的函数。

(11)mysql_close(连接号);

关闭对数据库的连接。连接必须是由mysql_connect打开的。该函数的使用不是严格必需的,因为在脚本结束时,所有非永久链路都会被自动关闭。

(12)mysql_pconnect(主机,用户名,口令);

与mysql_connect完全相似,但建立一个"永久连接",该连接一经建立永不关闭,即使使用mysql_close函数或程序执行完毕也不关闭.下一次试图建立永久连接时,系统如发现已存在一个永久连接,则直接返回该连接号而不重新创建。

下面是一个调用MYSQL数据库并分页显示的例子。

?

$pagesize = 5; //每页显示5条记录

$host="localhost";

$user="user";

$password="psw";

$dbname="book"; //所查询的库表名;

//连接MySQL数据库

mysql_connect("$host","$user","$password") or die("无法连接MySQL数据库服务器!");

$db = mysql_select_db("$dbname") or die("无法连接数据库!");

$sql = "select count(*) as total from pagetest";//生成查询记录数的SQL语句

$rst = mysql_query($sql) or die("无法执行SQL语句:$sql !"); //查询记录数

$row = mysql_fetch_array($rst) or die("没有更多的记录!"); /取出一条记录

$rowcount = $row["total"];//取出记录数

mysql_free_result($rst) or die("无法释放result资源!"); //释放result资源

$pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);//算出总共有几页

if(!isset($pageno)) {

$pageno = 1; //在没有设置pageno时,缺省为显示第1页

}

if($pageno1) {

$pageno = 1; //若pageno比1小,则把它设置为1

}

if($pageno$pagecount) {

$pageno = $pagecount; //若pageno比总共的页数大,则把它设置为最后一页

}

if($pageno0) {

$href = eregi_replace("%2f","/",urlencode($PHP_SELF));//把$PHP_SELF转换为可以在URL上使用的字符串,这样的话就可以处理中文目录或中文文件名

if($pageno1){//显示上一页的裢接

echo "a href="" . $href . "?pageno=" . ($pageno-1) . ""上一页/a ";

}

else{

echo "上一页";

}

for($i=1;$i$pageno;$i++){

echo "a href="" . $href . "?pageno=" . $i . """ . $i . "/a ";

}

echo $pageno . " ";

for($i++;$i=$pagecount;$i++){

echo "a href="" . $href . "?pageno=" . $i . """ . $i . "/a ";

}

if($pageno$pagecount){//显示下一页的裢接

echo "a href="" . $href . "?pageno=" . ($pageno+1) . ""下一页/a ";

}

else{

echo "下一页 ";

}

$offset = ($pageno-1) * $pagesize;//算出本页第一条记录在整个表中的位置(第一条记录为0)

$sql = "select * from pagetest LIMIT $offset,$pagesize";//生成查询本页数据的SQL语句

$rst = mysql_query($sql);//查询本页数据

$num_fields = mysql_num_fields($rst);//取得字段总数

$i = 0;

while($i$num_fields){//取得所有字段的名字

$fields[$i] = mysql_field_name($rst,$i);//取得第i+1个字段的名字

$i++;

}

echo "table border="1" cellspacing="0" cellpadding="0"";//开始输出表格

echo "tr";

reset($fields);

while(list(,$field_name)=each($fields)){//显示字段名称

echo "th$field_name/th";

}

echo "/tr";

while($row=mysql_fetch_array($rst)){//显示本页数据

echo "tr";

reset($fields);

while(list(,$field_name)=each($fields)){//显示每个字段的值

$field_value = $row[$field_name];

if($field_value==""){

echo "td /td";

}

else{

echo "td$field_value/td";

}

}

echo "/tr";

}

echo "/table";//表格输出结束

mysql_free_result($rst) or die("无法释放result资源!");//释放result资源

}

else{

echo "目前该表中没有任何数据!";

}

mysql_close($server) or die("无法与服务器断开连接!");//断开连接并释放资源

?

开放数据库连接(ODBC)已成为一种与数据库进行通信的工业标准。PHP也提供了标准的接口,使得PHP能调用Access,SQL SERVER等数据库。其相关函数是:

(1)integer odbc_connect(string dsn, string user, string password)

连接到一个ODBC数据库源名字上。

(2)integer odbc_exec(integer connection, string query)或 odbc_do(integer connection, string query)

在一个连接上执行查询。

(3)boolean odbc_fetch_row(integer result, integer row)

从一个结果集中获取一行数据。Row参数是可选的,若为空缺,则返回下一个有效行。在结果集中不再剩余行时返回false。

(4)boolean odbc_close(integer connection)

关闭一个数据库的连接。若在该连接上有打开的事务,则返回一个错误,而且连接不会被关闭。

最后,还是看个分页的例子:

?

//设定每页显示条数

$show_num = 10;

$spages = $pages;//避免$pages后期被改变

//定义连接

$dsn = "localhost";

$user = "sa";

$password = "";

//计算总记录数

$rs_num = "select count(*) as id from bbs where zu='0' and lei='".$lei."'";

$conn_id = odbc_connect($dsn,$user,$password);

$rnum = odbc_exec($conn_id,$rs_num);

while(odbc_fetch_row($rnum)){

$total_rs = odbc_result($rnum,"id");//将总记录数放入$total_rs变量

}

//计算与页有关的条数

$nnn = $total_rs / $show_num;//计算总页数

$hnnn = intval($nnn);//将总页数取整

$cnnnn = $nnn - $hnnn;

//计算所需总页数

switch ($cnnn){

case "0":

$hnnn++;

$nnn = $hnnn;//总页数

break;

default :

$nnn = $hnnn;//总页数

break;

};

if ($nnn == 0)$nnn++;

//计算页面改变所需的条件

$fore = $pages;

$next = $pages;

$fore -= 1;

$next += 1;

if ($fore 0) {

echo "a首页/a";

echo "a前页/a";

};

if ($pages $nnn) {

echo "a后页/a";

echo "a尾页/a";

};

echo "共".$nnn."页";

$query_string = "SELECT * FROM table where condition order by you wanted order";

$cur = odbc_exec($conn_id,$query_string);

//取到循环的顶部

$cnum = ($pages-1) * $show_num;//计算当前的记录游标的位置

//空循环到显示记录游标处

if ($cnum != 0){

for ($i=0;$i=$cnum;odbc_fetch_row($cur)){$i++;};

};

$i=1;

//显示记录

while(odbc_fetch_row($cur)){

echo ;

if ($i == $show_num){//在不满页数时跳出程序

break;

};

$i++;

};

//关闭连接

odbc_close($conn_id);

?

Oracle(甲骨文)是世界上最为流行的关系数据库。它是大公司推崇的工业化的强有力的引擎。我们先看看其相关的函数:

(1)integer ora_logon(string user , string password)

开始对一个Oracle数据库服务器的连接。

(2)integer ora_open(integer connection)

打开给出的连接的游标。

(3)integer ora_do(integer connection, string query)

在给出的连接上执行查询。PHP生成一个指示器,解析查询,并执行之。

(4)integer ora_parse(integer cursor, string query)

解析一个查询并准备好执行。

(5)boolean ora_exec(integer cursor)

执行一个先前由ora_parse函数解析过的查询。

(6)boolean ora_fetch(integer cursor)

此函数会使得一个执行过的查询中的行被取到指示器中。这使得您可以调用ora_getcolumn函数。

(7)string ora_getcolumn(integer cursor, integer column)

返回当前的值。列由零开始的数字索引。

(8)boolean ora_logoff(integer connection)

断开对数据库服务器的链接。

以下是向ORACLE数据库插入数据的示例程序:

html

headtitle向ORACLE数据库中插入数据/title/head

body

form action="?echo $PHP_SELF;?" method="post"

table border="1" cellspacing="0" cellpadding="0"

tr

thID/th

thname/th

thDescription/th

/tr

tr

tdinput type="text" name="name" maxlength="50" size="10"/td

tdinput type="text" name="email" maxlength="255" size="30"/td

tdinput type="text" name="Description" maxlength="255" size="50"/td

/tr

tr align="center"

td colspan="3"input type="submit" value="提交"  input type="reset" value="重写"/td

/tr

/table

/form

?

//先设置两个环境变量ORACLE_HOME,ORACLE_SID

putenv("ORACLE_HOME=/oracle/app/oracle/product/8.0.4");

putenv("ORACLE_SID=ora8");

//设置网页显示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

if($connection=ora_logon("scott","tiger")) {

//库表test有ID,name,Description三项

$sql = 'insert into test(ID,name,Description) values ';

$sql .= '('' . $ID . '','' . $name . '',''. $Description . '')';

if($cursor=ora_do($connect,$sql)) {

print("insert finished!");

}

$query = 'select * from test';

if($cursor=ora_do($connect,$query)) {

ora_fetch($cursor);

$content0=ora_getcolumn($cursor,0);

$content1=ora_getcolumn($cursor,1);

$content2=ora_getcolumn($cursor,2);

print("$content0");

print("$content1");

print("$content2");

ora_close($cursor);

}

ora_logoff($connection);

}

?

/body

/html

通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。 MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用, 我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接。我们当然不会 提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。

PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的PHP安装选项应该可以支持两者的使用。

想获得更多有关在Microsoft Windows平台上安装支持PHP3的Apache服务器的知识以及更多有关Oracle数据库的知识,请查阅以下URL:。

4.1 连接

if ($conn=Ora_Logon("user@TNSNAME","password"))

{

echo "SUCCESS ! Connected to database\n";

}

else

{

echo "Failed :-( Could not connect to database\n";

}

Ora_Logoff($conn);

phpinfo();

?

以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。

4.2 查询

假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了一个连接并查询的典型例子:

/*

* 连接数据库并执行查询

*/

function printoraerr($in_cur)

{

// 检查Oracle是否出错

// 如果存在错误则显示

// 当指针被激活时每次请求Oracle后调用该函数

if(ora_errorcode($in_cur))

echo "Oracle code - ".ora_error($in_cur)."\n";

return;

}

/** 主程序 */

if (!($conn=ora_logon("user@TNSNAME","password")))

{

echo "Connection to database failed\n";

exit;

}

echo "Connected as connection - $conn

\n";

echo "Opening cursor ...

\n";

$cursor=ora_open($conn); printoraerr($cursor);

echo "Opened cursor - $cursor

\n";

$qry="select user,sysdate from dual";

echo "Parsing the query $qry ...

\n";

ora_parse($cursor,$qry,0); printoraerr($cursor);

echo "Query parsed

\n";

echo "Executing cursor ...

\n";

ora_exec($cursor); printoraerr($cursor);

echo "Executed cursor

\n";

echo "Fetching cursor ...

\n";

while(ora_fetch($cursor))

{

$user=ora_getcolumn($cursor,0); printoraerr($cursor);

$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);

echo " row = $user, $sysdate

\n";

}

echo "Fetched all records

\n";

echo "Closing cursor ...

\n";

ora_close($cursor);

echo "Closed cursor

\n";

echo "Logging off from oracle...

\n";

ora_logoff($conn);

echo "Logged off from oracle

\n";

?

(译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分)

4.3 显示结果

以下代码演示了怎样查询数据库并将结果输出:

function printoraerr($in_cur, $conn)

{

// 检查Oracle是否出错

// 如果存在错误则显示

// 当指针被激活时每次请求Oracle后调用该函数

// If it encountered an error, we exit immediately

if(ora_errorcode($in_cur))

{

echo "Oracle code - ".ora_error($in_cur)."

n";

ora_logoff($conn);

exit;

}

return;

}

function exequery($w_qry,$conn)

{

$cursor=ora_open($conn); printoraerr($cursor,$conn);

ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn);

ora_exec($cursor); printoraerr($cursor,$conn);

$numrows=0;

$w_numcols=ora_numcols($cursor);

// 显示头部

echo "

\n";

for ($i=0;$i$w_numcols;$i++)

{

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";

echo "\t ".ora_columnname($cursor,$i)." \n";

}

echo "

\n";

while(ora_fetch($cursor))

{

echo " \n";

for ($i=0;$i$w_numcols;$i++)

{

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";

if(ora_columntype($cursor,$i)=="LONG")

echo " ".

ora_getcolumn($cursor,$i)."

\n";

else

echo " ".ora_getcolumn($cursor,$i)." \n";

printoraerr($cursor,$conn);

}

$numrows++;

echo "

\n";

}

if ($numrows==0)

echo " Query returned no records

\n";

else

{

echo " \n";

echo " Count \n";

echo " $numrows \n";

echo "

\n";

}

echo " \n";

ora_close($cursor);

return;

}

// 主程序

if(!($conn=ora_logon("user@SID","password")))

{

echo "Error: Cannot connect to database\n";

exit;

}

$qry="SELECT

deptno \"Dept\"

,empno \"Emp\"

,empnm \"Name\"

,salary \"Salary\"

FROM

employee

ORDER BY 1,2";

exequery($qry);

ora_logoff($conn);

?

(译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分)

4.4 基于HTTP的Oracle登录

将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。

if(!isset($PHP_AUTH_USER))

{

Header("WWW-authenticate: basic realm=\"$SID\"");

Header("HTTP/1.0 401 Unauthorized");

$title="Login Instructions";

echo "

You are not authorized to enter the site

\n";

exit;

}

else

{

if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW)))

{

Header("WWW-authenticate: basic realm=\"$SID\"");

Header("HTTP/1.0 401 Unauthorized");

$title="Login Instructions";

echo "

You are not authorised to enter the site

\n";

exit;

}

}

?

如何正确理解PHP获取显示数据库数据函数

1、PHP获取显示数据库数据函数之 mysql_result()

mixed mysql_result(resource result_set, int row [,mixed field])

从result_set 的指定row 中获取一个field 的数据. 简单但是效率低.

举例:

$link1 = @mysql_connect("server1", 

"webuser", "password") 

or die("Could not connect 

to mysql server!");

@mysql_select_db("company") 

or die("Could not select database!");

$query = "select id, name 

from product order by name"; 

$result = mysql_query($query);

$id = mysql_result($result, 0, "id");

$name = mysql_result($result, 0, "name");

mysql_close();

注意,上述代码只是输出结果集中的第一条数据的字段值,如果要输出所有记录,需要循环处理.

for ($i = 0; $i = mysql_num_rows($result); $i++)

{

$id = mysql_result($result, 0, "id");

$name = mysql_result($result, 0, "name");

echo "Product: $name ($id)";

}

注意,如果查询字段名是别名,则mysql_result中就使用别名.

2、PHP获取显示数据库数据函数之mysql_fetch_row()

array mysql_fetch_row(resource result_set)

从result_set中获取整行,把数据放入数组中.

举例(注意和list 的巧妙配合):

$query = "select id, 

name from product order by name"; 

$result = mysql_query($query);

while(list($id, $name) 

= mysql_fetch_row($result)) {

echo "Product: $name ($id)";

}

3、PHP获取显示数据库数据函数之mysql_fetch_array()

array mysql_fetch_array(resource result_set [,int result_type])

mysql_fetch_row()的增强版.

将result_set的每一行获取为一个关联数组或/和数值索引数组.

默认获取两种数组,result_type可以设置:

MYSQL_ASSOC:返回关联数组,字段名=字段值 

MYSQL_NUM:返回数值索引数组.

MYSQL_BOTH:获取两种数组.因此每个字段可以按索引偏移引用,也可以按字段名引用.

举例:

$query = "select id,

name from product order by name";

$result = mysql_query($query);

while($row = mysql_fetch_array

($result, MYSQL_BOTH)) { 

$name = $row['name'];

//或者 $name = $row[1];

$name = $row['id'];

//或者 $name = $row[0];

echo "Product: $name ($id)";

}

4、PHP获取显示数据库数据函数之mysql_fetch_assoc()

array mysql_fetch_assoc(resource result_set)

相当于 mysql_fetch_array($result, MYSQL_ASSOC)

5、PHP获取显示数据库数据函数之mysql_fetch_object()

object mysql_fetch_object(resource result_set) 

和mysql_fetch_array()功能一样,不过返回的不是数组,而是一个对象.

举例:

$query = "select id, name 

from product order by name";

$result = mysql_query($query); 

while($row = mysql_fetch_object

($result)) {

$name = $row-name;

$name = $row-id;

echo "Product: $name ($id)";

}

以上这些函数就是PHP获取显示数据库数据函数的全部总结。


网站标题:数据库php实验体会,php实验实践总结
标题链接:http://cdxtjz.cn/article/dschpps.html

其他资讯