《7PHP访问数据库.ppt》由会员分享,可在线阅读,更多相关《7PHP访问数据库.ppt(129页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PHP动态网站程序动态网站程序设计设计(第第2版版)唐四薪 主编 人民邮电出版社人民邮电出版社ISBN:978-7-115-50524-82020年年3月月第第7章章PHP访问访问数据库数据库网站数据库化的好处网站数据库化的好处v将网站数据库化,就是使用将网站数据库化,就是使用数据库数据库来管理整个网来管理整个网站。只要更新数据库的内容,网站的内容就会被站。只要更新数据库的内容,网站的内容就会被自动更新。将网站数据库化的好处如下:自动更新。将网站数据库化的好处如下:v可以可以自动更新网页自动更新网页。v加强搜索功能加强搜索功能。v可以实现各种基于数据库的应用。可以实现各种基于数据库的应用。7.
2、1访问访问MySQL数据库数据库PHP访问访问MySQLvPHP提供了大量的提供了大量的MySQL数据库操作内置函数数据库操作内置函数vPHP访问访问MySQL数据库的三种方法:数据库的三种方法:mysql内置函数内置函数mysqli内置函数内置函数PDO数据接口层数据接口层PHP访问数据库的步骤访问数据库的步骤浏览器浏览器ApacheApache数据库数据库1数据库数据库2连接数据库连接数据库创建结果集创建结果集$rowtitle输出字段到页面输出字段到页面数据库数据库数据库数据库服务器服务器服务器服务器连接数据库连接数据库服务器服务器访问数据库的步骤访问数据库的步骤连接数据库服务器连接数据
3、库服务器连接数据库连接数据库创建结果集创建结果集取结果集中的一行取结果集中的一行mysql_connectmysql_select_dbmysql_querymysql_fetch_assoc$conn=mysql_connect(localhost,root,111);mysql_select_db(guestbook,$conn);第一步第一步连接数据库连接数据库浏览器浏览器数据库数据库数据库数据库连接数据库连接数据库连接数据库连接数据库服务器服务器ApacheApache第二步第二步创建结果集创建结果集浏览器浏览器数据库数据库创建结果集创建结果集数据库数据库$result=mysql_q
4、uery(Select*fromlyb,$conn);连接数据库连接数据库连接数据库连接数据库服务器服务器ApacheApache第三步第三步取出结果集中的一行取出结果集中的一行浏览器浏览器数据库数据库连接数据库连接数据库创建结果集创建结果集$rowtitle输出字段到页面输出字段到页面数据库数据库$row=mysql_fetch_assoc($result);echo$rowtitle;ApacheApache页面显示数据表中的数据了页面显示数据表中的数据了设置字符集设置字符集v提示提示:在连接数据库服务器之后、选择数据库之:在连接数据库服务器之后、选择数据库之前一般要设置字符集前一般要设置
5、字符集vconn.php把连接数据库的代码把连接数据库的代码写在单独的文件中写在单独的文件中总结:访问数据库的步骤总结:访问数据库的步骤v建立与建立与MySQL服务器的连接;服务器的连接;v设置字符集;设置字符集;v选择要操作的数据库选择要操作的数据库v创建结果集创建结果集v将结果集中的一行记录读入数组中将结果集中的一行记录读入数组中v在网页上输出数组元素的值在网页上输出数组元素的值7.2.2创建结果创建结果集并输出记录集并输出记录创建结果集创建结果集v结果集结果集:结果集是内存中的一个表结果集是内存中的一个表记录记录1记录记录2记录记录3结果集指针结果集指针falsefalse连接数据库是和
6、指定的数据库建立联系,而创建连接数据库是和指定的数据库建立联系,而创建结果集是和该数据库中指定的表建立联系结果集是和该数据库中指定的表建立联系 取出结果集中的一行取出结果集中的一行v用用mysql_fetch_row()取出结果集中的一行到数取出结果集中的一行到数组中组中记录记录1记录记录2记录记录3结果集指针结果集指针falsefalseArray(0=1 1=祝祝大大家家 4=女女)注意:该方法有两个作用注意:该方法有两个作用:v将结果集指针当前指向的记录保存到数组中将结果集指针当前指向的记录保存到数组中v然后将结果集指针下移一条记录然后将结果集指针下移一条记录 取结果集中一行的方法取结果
7、集中一行的方法1.mysql_fetch_row():将当前记录保存到一个索引数组中。将当前记录保存到一个索引数组中。2.mysql_fetch_assoc():将当前记录保存到一个关联数组中。将当前记录保存到一个关联数组中。3.mysql_fetch_array():将当前记录保存到一个含有索引和关联的混合将当前记录保存到一个含有索引和关联的混合数组中数组中4.mysql_fetch_object()v推荐用推荐用第第2种种在页面上输出数据在页面上输出数据步骤:步骤:1.创建结果集创建结果集2.用用mysql_fetch_assoc()取出结果集中的取出结果集中的一行到数组中一行到数组中3.
8、输出数组中的元素即可,如输出数组中的元素即可,如echo$rowtitle;在页面上输出结果集中的数据在页面上输出结果集中的数据v$row=mysql_fetch_assoc($result)vv移动结果集指针的方法移动结果集指针的方法v移动到下一条记录移动到下一条记录mysql_fetch_assoc($result)v移动到指定的记录移动到指定的记录mysql_data_seek($result,3);输出多个字段或多条记录输出多个字段或多条记录v输出多个字段输出多个字段v输出多条记录输出多条记录输出第输出第1条条输出第输出第2条条使用循环语句输出所有记录使用循环语句输出所有记录循环体循环
9、体使用循环语句输出所有记录使用循环语句输出所有记录循环体循环体使用循环语句输出使用循环语句输出n条记录条记录v方法方法1:使用:使用for循环,限定循环次数为循环,限定循环次数为n;v方法方法2:Select*fromlyblimitn,这样结果集中就只,这样结果集中就只有有n条记录了。条记录了。v推荐用第二种方法推荐用第二种方法2.在页面上输出单个字段在页面上输出单个字段vmysql_result()函数可以返回结果集指针当前指函数可以返回结果集指针当前指向记录的某个字段值。向记录的某个字段值。语法为:语法为:mysql_result(result,row,field)v例如:例如:echo
10、mysql_result($result,1,author);输出第输出第2条记录的条记录的author字段的值,然后把结果字段的值,然后把结果集指针下移一条记录集指针下移一条记录5.返回记录总数返回记录总数vmysql_num_rows()函数可以返回结果集中的记函数可以返回结果集中的记录总数录总数v例如:例如:共有共有条条记录记录6.mysql_db_query()函数函数vmysql_db_query()函数可以同时选择数据库和函数可以同时选择数据库和创建结果集创建结果集vmysql_select_db(guestbook,$conn);$result=mysql_query(Selec
11、t*fromlyb,$conn);v可以用可以用mysql_db_query()改写为:改写为:v$result=mysql_db_query(guestbook,Select*fromlyb,$conn);释放结果集和关闭数据库连接释放结果集和关闭数据库连接v释放结果集释放结果集mysql_free_result()mysql_free_result($result);v关闭数据库连接关闭数据库连接mysql_close()mysql_close($conn);输出记录的应用输出记录的应用制作新闻网站制作新闻网站v制作一个网站要制作三个页面制作一个网站要制作三个页面网站首页网站首页栏目首页栏
12、目首页内页内页输出多个记录集中的记录输出多个记录集中的记录输出一个记录集的多条记录输出一个记录集的多条记录输出一条记录输出一条记录7.6新闻网站综合实例新闻网站综合实例制作新闻网站的首页制作新闻网站的首页v输出多个记录集中的记录输出多个记录集中的记录网站首页网站首页创建数据库连接创建数据库连接根据栏目名创建相应的结果集根据栏目名创建相应的结果集循环输出记录到这个栏目框循环输出记录到这个栏目框关闭记结果集关闭记结果集根据下一个栏目名创建相应的结果集根据下一个栏目名创建相应的结果集制作栏目首页制作栏目首页制作栏目首页制作栏目首页v输出记录集中的多条记录输出记录集中的多条记录栏目首页栏目首页连接数据
13、库连接数据库根据首页传过来的栏目名创建记录集根据首页传过来的栏目名创建记录集输出所有记录到栏目框中(可能还需分页)输出所有记录到栏目框中(可能还需分页)关闭记录集关闭记录集制作内页制作内页制作内页制作内页v输出单条记录输出单条记录内页内页连接数据库连接数据库根据其他页传过来的根据其他页传过来的ID值创建记录集(该记录集值创建记录集(该记录集中只有一条记录)中只有一条记录)输出该条记录的各个字段到页面合适位置上输出该条记录的各个字段到页面合适位置上关闭记录集关闭记录集5.2.3使用使用mysql_query方法添加记录方法添加记录1.利用利用Insert语句添加记录语句添加记录v?require
14、(conn.php);vmysql_query(insertintolyb(title,content,author,email,date)values(大家好大家好,PHP学学习习,小浣熊小浣熊,2012-3-3)ordie(执行失败执行失败);echo新增记录的新增记录的id是是.mysql_insert_id();v提示:执行添加记录不会创建结果集,因此提示:执行添加记录不会创建结果集,因此mysql_query前不要写前不要写$result=v不要插入自动递增字段的值不要插入自动递增字段的值返回插入记录的返回插入记录的自动递增字段值自动递增字段值5.2.3使用使用mysql_query
15、方法删除记录方法删除记录2.利用利用Delete语句删除记录语句删除记录vv本次操作共有本次操作共有条记录被删除条记录被删除!可返回影响可返回影响的记录数的记录数 5.2.3使用使用mysql_query方法更新记录方法更新记录v3.利用利用Update语句更新记录语句更新记录133andIDv记录新闻页面的点击次数记录新闻页面的点击次数mysql_query(updatenewssethits=hits+1whereid=.$_GETid.);mysql_query方法的总结方法的总结vmysql_query()方法方法参数为参数为Select语句:创建记录集语句:创建记录集参数为其他参数为
16、其他SQL语句:执行增、删、改操作语句:执行增、删、改操作参数为设置字符集命令:设置字符集参数为设置字符集命令:设置字符集网站的结构分析网站的结构分析v网站的前台:显示记录网站的前台:显示记录v网站的后台:添加、删除、修改记录网站的后台:添加、删除、修改记录添加、删除、修改记录的综合实例添加、删除、修改记录的综合实例v该实例能对数据表中的数据进行显示、添加、删该实例能对数据表中的数据进行显示、添加、删除和修改。程序主要包括管理主界面,添加记录除和修改。程序主要包括管理主界面,添加记录模块、删除记录模块和更新记录模块。模块、删除记录模块和更新记录模块。v5-6.php数据管理主界面数据管理主界面
17、vaddform.phpinsert.php添加记录模块添加记录模块vdelete.php删除记录模块删除记录模块veditform.php edit.php更新记录模块更新记录模块数据管理主界面数据管理主界面5-6.php通过超链接传递记录通过超链接传递记录IDv请注意请注意“删除删除”超链接:超链接:vahref=del.php?id=删除删除删除删除删除删除删除删除删除删除增、删、改的原理增、删、改的原理v添加记录添加记录获取表单数据获取表单数据将记录插入记录集将记录插入记录集添加记录的步骤添加记录的步骤浏览器浏览器IIS数据库数据库连接数据库连接数据库数据库数据库执行插入语执行插入语句
18、句$title=$_POSTtitle获取数据获取数据mysql_query(“Insertinto”)增、删、改的原理增、删、改的原理v删除记录删除记录获取记录获取记录ID根据根据ID执行删除语句执行删除语句删除记录的步骤删除记录的步骤浏览器浏览器IIS数据库数据库连接数据库连接数据库数据库数据库$id=$_GETid获取记录获取记录ID执行删除语执行删除语句句mysql_query(“deletefrom”)确认删除的实现确认删除的实现vahref=del.php?id=onclick=returnconfirm(确认要删除吗?确认要删除吗?)删除删除同时删除多条记录同时删除多条记录vin
19、puttype=checkboxname=selectedvalue=必须是数组必须是数组同时删除多条记录的实现同时删除多条记录的实现$selectid=$_POSTselected;if(count($selectid)0)$sel=implode(,$selectid);/将各个将各个数组元素用数组元素用“,”号连接起来号连接起来mysql_query(deleteFromlybwhereIDin($sel)ordie(执行失败执行失败);增、删、改的原理增、删、改的原理v修改记录修改记录显示记录到表单中显示记录到表单中获取表单数据和记录获取表单数据和记录ID根据根据ID创建记录创建记录集
20、集根据表单数据修改记录根据表单数据修改记录修改记录的步骤修改记录的步骤(第第1次与数据库通信次与数据库通信)浏览器浏览器数据库数据库连接数据库连接数据库创建结果集创建结果集$rowtitle输出字段到表单输出字段到表单数据库数据库ApacheApache修改记录的步骤修改记录的步骤(第第2次与数据库通信次与数据库通信)浏览器浏览器数据库数据库连接数据库连接数据库数据库数据库$id=$_GETid获取获取ID和数和数据据执行更新语执行更新语句句mysql_query(update)$title=$_POSTtitleApacheApache总结总结v添加记录添加记录获取表单数据获取表单数据将记录
21、写入结果集将记录写入结果集v删除记录删除记录获取记录获取记录ID根据根据ID创建结果集创建结果集删除记录删除记录v修改记录修改记录显示记录到表单中显示记录到表单中获取表单数据和记录获取表单数据和记录ID根据根据ID创建结果创建结果集集根据表单数据修改记录根据表单数据修改记录查询记录的实现查询记录的实现v提供一个表单供用户输入查询关键字提供一个表单供用户输入查询关键字v将用户提交的关键字作为条件用将用户提交的关键字作为条件用Select语句进行查询语句进行查询v将查询的结果(返回的记录集)显示在网页中。将查询的结果(返回的记录集)显示在网页中。查询程序的关键代码查询程序的关键代码v$keywor
22、d=trim($_GETkeyword);/获取输入的关键字获取输入的关键字v$sel=$_GETsel;v$sql=select*fromlyb;vif($keyword)v$sql=$sql.where$sellike%$keyword%;7.3分页显示数据分页显示数据网页中的分页效果网页中的分页效果7.3分页显示数据分页显示数据第第1条条第第2条条第第3条条第第4条条第第5条条第第6条条第第7条条第第8条条第第9条条第第10条条第第11条条第第12条条第第13条条第第14条条第二页第三页第四页第一页分页技术的实现分页技术的实现v在在数据库服务器数据库服务器实现:通过创建结果集的方式来实现
23、:通过创建结果集的方式来分页分页v在在Web服务器服务器实现:通过实现:通过PHP循环语句读取结果循环语句读取结果集中某页范围的记录集中某页范围的记录v在在浏览器端浏览器端实现:通过客户端实现:通过客户端JavaScript脚本只脚本只显示某页记录对应的显示某页记录对应的HTML元素元素分页程序实现的步骤分页程序实现的步骤v设置每页显示的记录数设置每页显示的记录数v获取记录总数获取记录总数v计算总共有多少页计算总共有多少页v取得要显示第几页的记录取得要显示第几页的记录v通过超链接传递页码通过超链接传递页码1.设置每页显示的记录数设置每页显示的记录数v每页显示每页显示5条记录条记录$PageSi
24、ze=5;2.获取结果集中的记录总数获取结果集中的记录总数v两种方法:两种方法:v1.通过通过mysql_num_rows()函数返回记录总数函数返回记录总数$RecordCount=mysql_num_rows($result);v2.通过通过select语句中的语句中的count函数实现:函数实现:$result=mysql_query(Selectcount(*)fromlyb,$conn);$row=mysql_fetch_row($result);$RecordCount=$row0;3.计算总页数计算总页数v通过通过$RecordCount和和$PageSize两个变量的值两个变量
25、的值计算计算$PageCount=ceil($RecordCount/$PageSize);返回大于或等返回大于或等于于x并且最接并且最接近近x的整数的整数 4.如何显示第如何显示第n页的记录页的记录v使用使用limit子句限定显示记录的范围子句限定显示记录的范围SELECT*FROM表名表名LIMIT起始位置起始位置,显示记显示记录数量录数量例如:若页码保存在例如:若页码保存在$Page中,要获取第中,要获取第$Page页显示的记录页显示的记录Select*From表名表名Limit($Page-1)*$PageSize,$PageSize显示第显示第n页的记录的程序页的记录的程序5.通过超
26、链接转到要显示的分页通过超链接转到要显示的分页vhttp:/localhost/php/5-9.php?page=2if(isset($_GETpage)/获取到的页码不为空获取到的页码不为空$Page=$_GETpage;else$Page=1;但普通用户不会知道在但普通用户不会知道在URL上输入类似上输入类似?page=2之之类的参数来访问分页类的参数来访问分页传递分页链接传递分页链接 定义分页链接定义分页链接v可以定义几个分页链接,供用户点击。可以定义几个分页链接,供用户点击。v“第一页第一页”链接的代码如下:链接的代码如下:echo第一页第一页;v“上一页上一页”链接的代码如下:链接的
27、代码如下:echo上一页上一页;v“下一页下一页”链接的代码如下:链接的代码如下:echo下一页下一页;v“末页末页”链接的代码如下:链接的代码如下:echo末页末页;在在Web服务器实现分页服务器实现分页v特点:结果集包含所有记录,而不是特点:结果集包含所有记录,而不是1页的记录页的记录v然后将结果集的指针指向第然后将结果集的指针指向第n页的第页的第1条记录,然条记录,然后用后用for循环循环输出循环循环输出$PageSize条记录条记录通过移动结果集指针进行分页通过移动结果集指针进行分页$result=mysql_query(Select*fromlyb,$conn);/将指针指向第将指针
28、指向第$Page页第页第1条记录条记录mysql_data_seek($result,($Page-1)*$PageSize);for($i=0;$imysql_data_seek(result,row)函数的功能是将结函数的功能是将结果集果集result的指针移动到指定的行数的指针移动到指定的行数row5.4.2对查询结果进行分页对查询结果进行分页v在获取了用户输入的查询值后,一方面将它传递在获取了用户输入的查询值后,一方面将它传递给给SQL语句进行查询,另一方面将其保存在分页语句进行查询,另一方面将其保存在分页链接的链接的URL参数(或表单隐藏域)中参数(或表单隐藏域)中5.4.3将分页程
29、序写成函数将分页程序写成函数v分页函数的输入参数有:分页函数的输入参数有:记录总数记录总数$RecordCount,每页显示的记录数每页显示的记录数$PageSize,当前显示哪一页当前显示哪一页$Page;当前页的当前页的url;查询关键字查询关键字$keyword(如没有查询关键字,可(如没有查询关键字,可不设置不设置$keyword)v2.调用分页函数实现分页调用分页函数实现分页page($RecordCount,$PageSize,$Page,$url,$keyword);5.4.4可设置每页显示记录数的分页程序可设置每页显示记录数的分页程序v设置设置pagesize属性为用户设置的分
30、页数属性为用户设置的分页数v将用户设置的分页数写入将用户设置的分页数写入Session变量中,使刷变量中,使刷新页面不会丢失新页面不会丢失自定义每页记录数的分页程序自定义每页记录数的分页程序7.4mysqli扩展扩展函数的使用函数的使用mysqli扩展函数的使用扩展函数的使用v一种新的访问一种新的访问mysql数据库的函数库数据库的函数库mysqli被封装到一个类中,它是一种面向对象的被封装到一个类中,它是一种面向对象的技术,其中技术,其中i表示改进(表示改进(improvement),其执行),其执行速度更快速度更快v要使用要使用mysqli,需在,需在php.ini中进行配置:中进行配置:
31、;extension=php_mysqli.dll去掉前面的注释符(去掉前面的注释符(;)使用使用mysqli函数访问数据库的步骤函数访问数据库的步骤v与与mysql函数非常类似,也分为函数非常类似,也分为4步步v连接数据库连接数据库v创建结果集创建结果集v取出结果集中的一行到数组中取出结果集中的一行到数组中v输出数组元素到页面输出数组元素到页面5.5.1连接连接mysql数据库数据库v1.使用使用mysqli_connect()函数函数mysqli_connect()函数用来连接函数用来连接MySQL数据库,数据库,语法如下:语法如下:mysqli对象名对象名=mysqli_connect(
32、数据库服务器数据库服务器,用户名用户名,密码密码,数据库名数据库名)v例如:例如:$conn=mysqli_connect(localhost,root,111,guestbook);5.5.1连接连接mysql数据库数据库v2.声明声明mysqli对象对象$conn=newmysqli(localhost,root,111,guestbook);也可写成也可写成$conn=newmysqli();$conn-connect(localhost,root,111);$conn-select_db(guestbook);对象名对象名-方法名方法名-是成员运算符是成员运算符 表表5-1mysqli
33、类中的成员方法类中的成员方法方法名方法名功能功能connect()打开一个新的打开一个新的连连接到接到MySQL数据数据库库服服务务器器select_db()选择选择当前数据当前数据库库set_charset()设设置客置客户户端的默端的默认认字符集字符集close()关关闭闭先前打开的先前打开的连连接接query()执执行行SQL语语句,并返回句,并返回结结果集或不返回果集或不返回multi_query()同同时执时执行多个行多个查询语查询语句句store_result()在在执执行多行多查询语查询语句句时时,获获取当前取当前结结果集果集next_result()在在执执行多行多查询语查询语
34、句句时时,获获取当前取当前结结果集的下一个果集的下一个结结果果集集more_results()从多从多查询语查询语句中句中检查检查是否有任何更多的是否有任何更多的查询结查询结果集果集5.5.2执行执行SQL语句创建结果集语句创建结果集v(1)mysqli_query()函数的语法如下:函数的语法如下:结果集结果集=mysqli_query(连接对象连接对象,SQL语句语句)$result=mysqli_query($conn,select*fromlyb);v(2)mysqli对象的对象的query()函数的基本语法和示函数的基本语法和示例如下:例如下:对象名对象名-query(SQL语句语句
35、)$result=$conn-query(select*fromlyb);5.5.3从结果集中获取数据从结果集中获取数据v将指针指向的当前记录保存到数组将指针指向的当前记录保存到数组$row中,并中,并使结果集指针指向下一条记录。使结果集指针指向下一条记录。$row=$result-fetch_assoc();v完整程序:显示数据表在网页上完整程序:显示数据表在网页上5-17.php表表5-2mysqli_result类中的成员方法类中的成员方法方法名方法名功能功能fetch_row()以索引数以索引数组组的形式返回的形式返回结结果集中当前指向的果集中当前指向的记录记录fetch_assoc(
36、)以关以关联联数数组组的形式返回的形式返回结结果集中当前指向的果集中当前指向的记录记录fetch_array()以索引数以索引数组组和关和关联联数数组组的形式返回的形式返回结结果集中当前指向果集中当前指向的的记录记录fetch_object()以以对对象的形式返回象的形式返回结结果集中当前指向的果集中当前指向的记录记录data_seek(n)将将结结果集指果集指针针指向第指向第n条条记录记录fetch_field()从从结结果集中果集中获获得某一字段的信息得某一字段的信息fetch_fields()从从结结果集中果集中获获得全部字段的信息得全部字段的信息field_seek()设设置置结结果集
37、中字段的偏移位置果集中字段的偏移位置close()关关闭结闭结果集果集返回结果集中记录总数返回结果集中记录总数vnum_rows是是mysqli_result类中的一个成员属类中的一个成员属性:性:记录总数记录总数num_rows?v提示:如果要判断结果集不为空,只能使用提示:如果要判断结果集不为空,只能使用if($result-num_rows0)来判断,而不能使用来判断,而不能使用if($result)来判断来判断5.5.4同时执行多条同时执行多条SQL语句语句v有时可能需要同时执行多条有时可能需要同时执行多条SQL语句,比如要在语句,比如要在页面上创建两个结果集页面上创建两个结果集5.5
38、.4同时执行多条同时执行多条SQL语句语句v可以可以使用使用multi_query()函数同时执行多条函数同时执行多条SQL语句语句,创建两个结果集,创建两个结果集。v如果执行的是如果执行的是Select语句,就可以使用语句,就可以使用store_result()方法将当前结果集取回到客户端,而用方法将当前结果集取回到客户端,而用next_result()方法可转到下一个结果集。方法可转到下一个结果集。5.6新闻网站综合实例新闻网站综合实例图图5-32新闻网站的结构及其对应页面新闻网站的结构及其对应页面新闻网站栏目1栏目2栏目n新闻1新闻2新闻3新闻4新闻12新闻13首页栏目首页新闻页数据库设
39、计数据库设计-news表结构表结构字段名字段名字段含字段含义义数据数据类类型型ID新新闻闻的的编编号号int,自,自动递动递增,主增,主键键title新新闻标题闻标题varcharcontent新新闻闻内容内容TEXTBigClassName新新闻闻所属的大所属的大类类名名varcharSmallClassName 新新闻闻所属的小所属的小类类名(可不指定)名(可不指定)varcharimagenum该该条新条新闻闻中含的中含的图图片数片数intfirstImageName新新闻闻中第一中第一张图张图片的文件名片的文件名varcharuser新新闻发闻发布者布者varcharinfotime新
40、新闻闻的的发发布日期布日期datetimehits该该条新条新闻闻的点的点击击次数次数intok是否将是否将该该新新闻闻作作为图为图片新片新闻显闻显示(示(该该新新闻闻中必中必须须含有含有图图片)片)tinyint网站的后台页面网站的后台页面连接数据库文件连接数据库文件conn.phpv采用采用mysqli函数连接数据库函数连接数据库connect(localhost,root,111);$conn-select_db(test);$conn-query(setnamesgb2312);?创建每个栏目的结果集创建每个栏目的结果集v$result=$conn-query(select*fromn
41、ewswhereBigclassname=通知公告通知公告orderbyIDdesclimit6);创建通知公告创建通知公告栏目的结果集栏目的结果集填充结果集中记录到栏目框填充结果集中记录到栏目框通知通知公告公告?for($i=0;$ifetch_assoc();?ahref=onews.php?id=close();新闻版块最终效果图新闻版块最终效果图制作动态图片轮显效果制作动态图片轮显效果v1.Pixviewer.swf文件的原理文件的原理vvarpics=uppic/1.gif|uppic/2.gif|uppic/3.gif|uppic/4.gif|uppic/5.gifvvarlink
42、s=onews.php?id=88|onews.php?id=87|onews.php?id=86|onews.php?id=8|onews.php?id=7vvartexts=爱我雁城、爱我师院爱我雁城、爱我师院|国培计划国培计划|青青春舞动春舞动|长春花志愿者协会长春花志愿者协会|朝花夕拾,似水流朝花夕拾,似水流年年5.6.3制作动态图片轮显效果制作动态图片轮显效果Dowhilenotrs.Eof%pics+=uppic/依次添加每幅图片的依次添加每幅图片的URL地址地址links+=onews.asp?id=texts+=%/如果不是最后一条记录如果不是最后一条记录Ifrs.Absolu
43、tePosition pics+=|;links+=|;texts+=|;%endifrs.MoveNextLoop“上一条上一条”、“下一条下一条”新闻链接的制新闻链接的制作作v“上一条上一条”链接主要是要找到上一条新闻的链接主要是要找到上一条新闻的id值。值。不能通过将本条新闻的不能通过将本条新闻的id值减值减1实现实现(可能是其他可能是其他栏目的新闻栏目的新闻)v应该通过一个查询语句,找到在同一栏目应该通过一个查询语句,找到在同一栏目(bigclassname)中所有)中所有id值比该新闻的值比该新闻的id值值小的记录,再对这些记录进行逆序排列,取其中小的记录,再对这些记录进行逆序排列,
44、取其中id值最大的一条值最大的一条5.6.6FCKeditor的使用的使用vFCKeditor是一个在线编辑器是一个在线编辑器v可以像可以像DW的设计视图一样对新闻内容中的文字的设计视图一样对新闻内容中的文字和图片进行可视化排版和图片进行可视化排版图图5-37FCKeditor的目录结构的目录结构FCKeditor的使用步骤的使用步骤v1.调用调用fckeditor编辑器编辑器v2.配置配置fckeditor编辑器的文件上传功能编辑器的文件上传功能v3.配置对上传文件进行重命名配置对上传文件进行重命名v4.解决文件上传功能的安全性问题解决文件上传功能的安全性问题1.调用调用fckeditor编
45、辑器编辑器v将将FCKeditor编辑器嵌入到表单中编辑器嵌入到表单中vv替换为:替换为:vBasePath=fckeditor/;$oFCKeditor-Width=95%;/设置显示宽度设置显示宽度v$oFCKeditor-Height=400px;/设置显示高度设置显示高度v$oFCKeditor-Value=$rowcontent;/设置编辑器设置编辑器的值,将显示在编辑器中的值,将显示在编辑器中v$oFCKeditor-Create();/创建编辑器创建编辑器v?2.配置配置fckeditor编辑器的文件上传功能编辑器的文件上传功能vFCKeditor提供了文件浏览和文件快速上传功能
46、提供了文件浏览和文件快速上传功能v打开打开fckeditoreditorfilemanagerconnectorsphp目录中的目录中的config文件,找到如下代码:文件,找到如下代码:$ConfigEnabled=true;$ConfigUserFilesPath=upfiles/;/定义上定义上传目录传目录v再打开再打开fckeditor根目录下的根目录下的fckeditor.js,确保,确保以下两行的值为以下两行的值为php:var_FileBrowserLanguage=php;var_QuickUploadLanguage=php;3.配置对上传文件进行重命名配置对上传文件进行重命
47、名v找到找到editorfilemanagerconnectorsphp目录下的目录下的io.php文件,将函数名为文件,将函数名为SanitizeFolderName的函数代的函数代码修改如下:码修改如下:vfunctionSanitizeFileName($sNewFileName)v$arr=explode(.,$sNewFileName);v$ext=array_pop($arr);/第一个数组元素保存了第一个数组元素保存了.前的文件名。前的文件名。v$filename=date(Ymd_His_).rand(1000,9999).$ext;vreturn$filename;v4.解决
48、文件上传功能的安全性问题解决文件上传功能的安全性问题v假设网站攻击者猜测到了文件上传程序的路径,假设网站攻击者猜测到了文件上传程序的路径,则他可以通过输入则他可以通过输入url直接访问该程序,以上传直接访问该程序,以上传文件文件v为此,需要判断上传文件者是否是登录成功的用为此,需要判断上传文件者是否是登录成功的用户,这可以通过户,这可以通过Session变量判断变量判断v$ConfigEnabled=isset($_SESSIONadmin);7.6数据库接口数据库接口层层PDO7.6数据库接口层数据库接口层PDOvPDO(PHPDataObject)是为)是为PHP访问数据库访问数据库定义的
49、一个轻量级的、一致性的数据库接口定义的一个轻量级的、一致性的数据库接口v提供了一个数据库访问抽象层,作用是统一各种提供了一个数据库访问抽象层,作用是统一各种数据库的访问接口数据库的访问接口vPDO是未来是未来PHP在数据库处理方面的主要发展方在数据库处理方面的主要发展方向向数据库接口层数据库接口层PDO的位置的位置PHP应用程序数据库接口层数据库接口层PDOOracleMySQLPDO_OCIPDO_MYSQLPDO_ODBCODBCADODBSQL ServerAccess5.7.1PDO的安装的安装v打开打开PHP的配置文件的配置文件php.ini,在,在DynamicExtensions一节中,找到:一节中,找到:v;extension=php_pdo.dll去掉去掉;号即可号即可v接下来,还需要激活一种或多种接下来,还需要激活一种或多种PDO驱动程序,驱动程序,添加下面的一行或多行即可。添加下面的一行或多行即可。vextension=php_pdo_mysql.dllextension=php_pdo_mssql.dllextension=php_pdo_oci.dllextension=php_pdo_odbc.dll查看查看PDO是否安装成功是否安装成功vechophpinfo();5.7.2创建创建PDO对象连接数据库对象连接数据库v创建创建PDO对象:对象:v对象