PHP数据库编程.ppt_第1页
PHP数据库编程.ppt_第2页
PHP数据库编程.ppt_第3页
PHP数据库编程.ppt_第4页
PHP数据库编程.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

生物信息学数据库设计,第三章 PHP数据库编程,2,学习内容,PHP基础 PHP基本数据类型 PHP条件与循环 PHP字符串与正则表达式 PHP数组 PHP函数 PHP数据库编程,3,MySQL应用基础,客户端程序和实用工具介绍 myisampack:压缩MyISAM表以产生更小的只读表的一个工具 mysql:MySQL命令行工具,通过交互方式输入SQL语句或从文件以批处理模式执行SQL语句。 mysqlaccess:检查访问权限的主机名、用户名和数据库组合的客户端工具。 mysqladmin:执行管理操作的客户端程序,用于创建或删除数据库、重载授权表、将表刷新到硬盘上及重新打开日志文件 mysqlbinlog:从二进制日志读取语句的工具。 mysqlcheck:表维护程序,用于检查、修复、分析及优化表。 mysqldump:将MySQL数据库转储到一个文件(如SQL语句或tab分隔符文本文件)。 mysqlhotcopy:数据库备份程序,可在MySQL服务器运行时快速备份MyISAM或ISAM表。 mysqlimport:数据导入程序,使用LOAD DATA INFILE将文本文件导入MySQL数据库的相关表中。 mysqlshow:显示数据库、表、列及索引相关信息的客户端程序。 perror:显示系统或MySQL错误代码含义的工具。 replace:更改文件中或标准输入中字符串的实用工具。,mysql命令行工具 1. 调用mysql 命令提示符下调用mysql: mysql -hhostname -uusername -ppassword 其中hostname指定要连接的MySQL服务器的主机名,若要连接本机 上的MySQL服务器,主机名可用localhost表示;username指定用户 名,如root;password表示登录密码,如123456。若使用了-p选项而 未指定密码,则会显示“Enter Password:”,提示输入密码。,4,创建、显示和删除数据库 1. 创建数据库 CREATE DATABASE | SCHEMA IF NOT EXISTS db_name create_specification , create_specification . create_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_name 2. 显示数据库列表 SHOW DATABASES LIKE pattern 3. 删除数据库 DROP DATABASE | SCHEMA IF EXISTS db_name,5,表的创建与维护 1. 表的创建 CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name ( column_definition, . ) CHARACTER SET charset_name COLLATE collation_name COMMENT string 2. 查看表信息 SHOW FULL TABLES FROM db_name LIKE pattern 3. 查看列信息 SHOW FULL COLUMNS FROM tbl_name FROM db_name LIKE pattern,6,4. 表的修改 ALTER IGNORE TABLE tbl_name alter_specification , alter_specification . alter_specification: ADD COLUMN column_definition FIRST | AFTER col_name | ADD COLUMN (column_definition , .) | ALTER COLUMN col_name SET DEFAULT literal | DROP DEFAULT | CHANGE COLUMN old_col_name column_definition FIRST|AFTER col_name | MODIFY COLUMN column_definition FIRST | AFTER col_name | DROP COLUMN col_name | DROP PRIMARY KEY | RENAME TO new_tbl_name 5. 表的重命名 RENAME TABLE tbl_name TO new_tbl_name , tbl_name2 TO new_tbl_name2 . 6. 表的删除 DROP TEMPORARY TABLE IF EXISTS tbl_name , tbl_name .,7,插入记录 1. 使用指定值插入记录 INSERT LOW_PRIORITY | DELAYED | HIGH_PRIORITY IGNORE INTO tbl_name (col_name , .) VALUES ( expr | DEFAULT ,. ) , ( . ) , . ON DUPLICATE KEY UPDATE col_name=expr , . 2. 从一个表向另一个表插入记录 INSERT LOW_PRIORITY | HIGH_PRIORITY IGNORE INTO tbl_name (col_name,.) SELECT . ON DUPLICATE KEY UPDATE col_name=expr, . ,8,查询记录 SELECT select_expr, . INTO OUTFILE file_name export_options | INTO DUMPFILE file_name FROM table_references WHERE where_definition GROUP BY col_name | expr | position ASC | DESC , . HAVING where_definition ORDER BY col_name | expr | position ASC | DESC , . LIMIT offset , row_count | row_count OFFSET offset 1. 检索未引用任何表的计算列 2. 检索所有行和列 从一个表中检索所有行和列是SELECT语句最简单的应用。在 这种情况下,在SELECT子句使用星号(*)表示所有列,并通过 FROM子句指定要检索的表。,9,更改记录 单表语法: UPDATE LOW_PRIORITY IGNORE tbl_name SET col_name1=expr1 , col_name2=expr2 . WHERE where_definition ORDER BY . LIMIT row_count 多表语法: UPDATE LOW_PRIORITY IGNORE tbl_name , tbl_name SET col_name1=expr1 , col_name2=expr2 . WHERE where_definition ,10,删除记录 单表语法: DELETE LOW_PRIORITY QUICK IGNORE FROM tbl_name WHERE where_definition ORDER BY . LIMIT row_count 多表语法: DELETE LOW_PRIORITY QUICK IGNORE tbl_name .* , tbl_name.* . FROM table_references WHERE where_definition 或者: DELETE LOW_PRIORITY QUICK IGNORE FROM tbl_name.* , tbl_name.* . USING table_references WHERE where_definition ,11,权限管理 1. 设置权限 GRANT priv_type (column_list) , priv_type (column_list) . ON TABLE | FUNCTION | PROCEDURE tbl_name | * | *.* | db_name.* TO user IDENTIFIED BY PASSWORD password , user IDENTIFIED BY PASSWORD password . REQUIRE NONE | SSL| X509 CIPHER cipher AND ISSUER issuer AND SUBJECT subject WITH GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count 2. 撤销权限 第一种语法: REVOKE priv_type (column_list) , priv_type (column_list) . ON TABLE | FUNCTION | PROCEDURE tbl_name | * | *.* | db_name.* FROM user , user . 第二种语法: REVOKE ALL PRIVILEGES, GRANT OPTION FROM user , user .,12,七 PHP数据库编程,从根本上来说,PHP是通过预先写好的一些列函数来与MySQL数据库进行通信,向数据库发送指令、接收返回数据等都是通过函数来完成。下图给出了一个普通PHP程序与MySQL进行通信的基本原理示意图。,13,14,上图展示了PHP程序连接到MySQL数据库服务器的原理。可以看出,PHP通过调用自身的专门用来处理MySQL数据库连接的函数,来实现与MySQL通信。而且,PHP并不是直接操作数据库中的数据,而是把要执行的操作以SQL语句的形式发送给MySQL服务器,由MySQL服务器执行这些指令,并将结果返回给PHP程序。MySQL数据库服务器可以比作一个数据管理员。其他程序需要这些数据时,只需要向管理员提出请求,管理员就会根据要求进行相关的操作或返回相应的数据。,15,16,明白了PHP操作MySQL的流程,我们就很容易掌握PHP操作MySQL的相关函数。因为以上几乎每一个步骤,都有相应的函数与之对应。开发PHP数据库程序时,只需要按照流程调用相关函数,数据库操作便可轻松实现。 最常用的有mysql_connect()、mysql_select_db()、mysql_query()、mysql_fetch_array()、mysql_num_rows()、mysql_close()等。,17,7.1 创建数据库连接 1. 创建非持久连接 resource mysql_connect ( string server , string username , string password , bool new_link , int client_flags ) 2. 创建持久连接 resource mysql_pconnect ( string server , string username , string password , int client_flags ) 3. 选择数据库 bool mysql_select_db ( string database_name , resource link_identifier ) 4. 关闭MySQL连接 bool mysql_close ( resource link_identifier ),18,mysql_connect()函数 resource mysql_connect ( string server, string username , string password) 该函数返回类型为resource型,即资源型。三个参数分别为MySQL服务器地址、MySQL用户名、密码。这里的用户名可以用超级管理员的,也可以用用户表中存在的其他用户。 如果出现下列提示: Warning: mysql_connect() function.mysql-connect: Unknown MySQL server host 则说明MySQL服务器地址错误,可能是输入有错误,或者服务器没有启动,或者端口号不对。这时可以检查函数的第一个参数是否提供正确,MySQL是否已成功启动。,19,还有可能出现下列提示: Warning: mysql_connect() function.mysql-connect: Access denied for user 这说明用户名或密码有错误。或者本帐号没有在本MySQL服务器上登陆的权限。 我们这里之所以如此详细地讲解该函数,就是因为这时连接到MySQL数据库的第一步。只要这一步成功了,那么下面的所有函数便都能运行。连接到数据库是一切工作的起点。因此必须保证此步骤成功,才能继续下面的内容。,20,mysql_select_db()函数 设置活动的 MySQL 数据库。 如果成功,则该函数返回 true。如果失败,则返回 false。,21,$GLOBALS(Global 变量) 包含一个引用指向每个当前脚本的全局范围内有效的变量。 $_SERVER(服务器变量) 变量由web服务器设定或者直接与当前脚本的执行环境相关联。 $_GET(HTTP GET 变量) 经由URL请求提交至脚本的变量。 $_POST(HTTP POST 变量) 经由HTTP POST方法提交至脚本的变量。,22,$_COOKIE(HTTP Cookies) 经由HTTP Cookies 方法提交至脚本的变量。 $_FILES(HTTP 文件上传变量) 经由HTTP POST 文件上传而提交至脚本的变量。 $_ENV(环境变量) 执行环境提交至脚本的变量。 $_REQUEST(Request 变量) 经由GET,POST 和 COOKIE机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义 $_SESSION(Session 变量) 当前注册给脚本会话的变量。,23,为了避免访问MySQL数据库时出现乱码现象,对数据库连接文件进行修改,即在PHP代码块末尾添加以下语句: mysql_query ( “SET NAMES gb2312“ ) ; 还应当把PHP页的字符集设置为简体中文,这可以通过设置文件首部的标记来实现,代码如下: ,24,在网页的数据传递中不外乎两种方式,一种是接收表单数据(也称为POST方法),另一种是URL附加数据(也称为GET方法)。 代码诸如“5-2.php?show_tag=1&date_name=date”的代码,就传递了两个数据,也就是说我们在传递多个数据的时候要用“&”进行连接或分割。,25,GET方法可以在地址栏中显示出来,也就是比较暴露存在着安全隐患,而POST方法则比较隐蔽,特别是隐藏表单的使用,不仅可以增加程序的安全性,还可以传递一些不需要用户输入或不能让用户更改的贯穿若干个网页之间的量值。,26,实例压缩包执行过程,脚本执行 打开phpmyadmin,创建数据库samples. 导入samples.sql. 创建用户user1/user1 授权select,insert,update,delete.,7.2 通过编程实现查询记录 1. 执行MySQL查询 resource mysql_query ( string query , resource link_identifier ) 2. 从记录集中获取行作为数组 array mysql_fetch_array ( resource result , int result_type ) 还可以使用mysql_fetch_row()函数或mysql_fetch_assoc()函数。,28,mysql_query()函数 resource mysql_query ( string query , resource link_identifier) mysql_query() 向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之。查询结果会被缓存。,29,array mysql_fetch_array ( resource result , int result_type ) 该函数的作用是,读取记录集result中的当前记录,将记录的各个字段的值存入一个数组中,并返回这个数组,然后将记录集指针移动到下一条记录。如果记录集已经到达末尾,则返回false。 array mysql_fetch_array ( resource result , int result_type ) 第二个参数result_type为可选,此参数用来设置返回的数组采用什么样的下标。有三个备选值:MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH。三个参数的含义如下:,30,MYSQL_ASSOC:返回的数组将以该记录的字段名称作为下标。 MYSQL_NUM:返回的数组以从0开始的数字为下标。 MYSQL_BOTH:返回的数组既可以用字段名为下标,也可以用数字为下标。,31,mysql_close()函数 此函数用来关闭一个数据库连接。其使用格式如下; bool mysql_close ( resource link_identifier ) 本函数只有一个可选参数link_identifier。此参数表示要关闭的连接的ID。也就是mysql_connect()函数执行成功后返回的一个连接标记。参数为空时表示关闭当前连接。该函数返回一个布尔型结果。当关闭成功时返回true,关闭失败是返回false。,32,mysql_close()函数 ,33,3. 获取记录集的行数和列数 用mysql_num_rows()函数可以取得记录集中包含的行数: int mysql_num_rows ( resource result ) 用mysql_num_fields()函数可以取得记录集中包含的字段数目: int mysql_num_fields ( resource result ) 4. 获取列信息 object mysql_fetch_field ( resource result , int field_offset ),34,7.3 分页显示记录集 1. 通过编程实现分页显示 对于MySQL数据库,分页显示记录集可以通过在SELECT语句中添加LIMIT子句指定要显示的起始记录和终止记录来实现,在一个页面中显示的记录构成一个记录组。通过添加记录集导航条可以在不同记录组之间移动,也可以通过记录计数器来显示总页数、当前页号及记录总数等信息。,35,7.4 创建搜索/结果页 为了给动态网站添加搜索功能,通常需要创建一个搜索页和一个结果页。在搜索页中,访问者通过HTML表单输入搜索参数并将这些参数传递给服务器上的结果页,由结果页获取搜索参数,连 接到数据库并根据搜索参数对数据库进行查询,创建记录集并显示其内容。在某些情况下,也可以把搜索页和结果页合并在一起。,36,7.5通过编程实现添加记录 连接到MySQL服务器并选择要访问的数据库。 向MySQL服务器发送一个SET NAMES gb2312语句,保证中文字符得到正确处理。 通过预定义数组$_POST获取用户通过表单提交的数据,并将这些表单数据应用于INSERT INTO语句中。 向MySQL服务器发送一条INSERT INTO语句,从而实现新记录的添加。 添加新记录后,可通过调用mysql_affected()函数获取被插入的记录行数: int mysql_affected_rows ( resource link_identifier ),37,7.6快速生成记录更新页 一个记录更新页包括以下三个构造模块:用于从数据库表中检索记录的过滤记录集;允许用户修改记录数据的HTML表单;用于更新数据库表的“更新记录”服务器行为。,38,通过主/详细页集合实现记录的选择和更新,在主页中通过链接选择要更新的记录,通过URL参数向详细页传递要更新记录的标识,在详细页中获取该记录标识并据此来检索要更新的记录集,将各个表单控件绑定到相关的记录字段上。有时也将主页和详细页合并在一起。 当提交表单时,用预定义数组变量$_POST获取表单变量的值,把这些值作为字段的新值用于UPDATE语句。 创建数据库连接,设置字符集,并通过调用mysql_query()函数来执行UPDATE语句以实现记录更 新。 执行UPDATE语句后,通过调用mysql_affected_rows()来获取被更新的记录行数。这里需要特别指出的是,如果一行记录中的所有字段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论