友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
php程序设计简明教程(DOC格式)-第9部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
作用是对用户发出的命令进行语法检查,检查无误,向服务器提交这些命令请求,接受和向用户返回服务器执行
的结果反馈信息;检查中若发现用户发出的命令不合法,则拒绝向服务器提交命令,同时返回出错信息。
mysql。exe 是在MS…DOS 或命令提示符下使用的一种客户端工具,通过命令的方式操纵服务器。
PHP 讲义 第 58 页 共 90 页
…………………………………………………………Page 59……………………………………………………………
图 MySQL数据库管理系统中的C/S结构
注意:mysql。exe 可以安装在远程主机上,不一定必须和服务程序在一起。
以下说明的前提:安装了MySQL,启动了服务程序。若这部分工作没有做,参考第一章第三节实验中有关内容
现行完成准备工作。
(1)登录和注销
登录:通过客户端程序mysql。exe 与服务器程序建立信任连接。
建立连接时,需要提供客户机名,用户名,密码等参数,经服务器验证通过后,会返回成功建立连接的信息,表
明连接成功。
启动客户端程序mysql。exe:在命令提示符或MS…DOS 下,进入d:mysqlbin,键入命令mysql 回车。
若出现类似如下结果:
Wele to the MySQL monitor。 mands end with ; or g。
Your MySQL connection id is 26 to server version: 3。23。43
Type 'help;' or 'h' for help。 Type 'c' to clear the buffer。
mysql》
则表明连接成功。
mysql 命令的完整形式是:
mysql –h servername –u username –p
参数说明:
…h 指明主机,省略此参数,则默认为 localhost
localhost,MySQL 服务器,在服务器看来,它所在的机器就是localhost,即本地机。
…u 指明用户名(账号)
…p 使用密码
上面键入的命令mysql 后面不带任何参数,这是因为MySQL 安装完毕后,系统数据库mysql 中的权限表user
中,存在默认的空帐号、无密码的超级用户,因此可以从远程主机使用mysql。exe 匿名访问服务器主机。
注销:即断开当前与服务器的连接,键入exit 回车即可。
注意:
“命令+参数;”是命令语句行的一般形式。
在mysql。exe 环境下,使用的命令不区分大小写。
命令的末尾必须带语句结束符——分号,以便让mysql。exe 正确区分、解释、执行一个完整的语句。
(2 )数据库操作
〃Y 创建数据库
基本句法:CREATE DATABASE db_name;
db_name 是要创建的数据库的名字。
该语句执行成功后,会在服务器的 MySQL 数据目录(即 MySQL 安装目录下的data 目录)下面创建一个名
为db_name 的目录。
PHP 讲义 第 59 页 共 90 页
…………………………………………………………Page 60……………………………………………………………
〃Y 查看有哪些数据库
基本句法:SHOW DATABASES;
〃Y 打开数据库(选定数据库)
基本句法:USE db_name;
若要对表进行查询,修改,删除等操作,必须先打开数据库。
〃Y 删除数据库
基本句法:DROP DATABASE 'IF EXISTS' db_name;
DROP DATABASE 删除数据库中的所有表和数据库。要小心地使用这个命令。
DROP DATABASE 返回从数据库目录被删除的文件的数目。通常,这3 倍于表的数量,因为每张表对应于一
个“。myd”文件、一个“。myi”文件和一个“。frm”文件。
文件 作用
tbl_name。frm 表定义(表格)文件
tbl_name。MYD 数据文件
tbl_name。MYI 索引文件
(3)表操作
〃Y 创建表
基本句法:CREATE TABLE table_name(列1 定义,列2 定义,…,列n 定义);
〃Y 查看有哪些表
基本句法:SHOW TABLES;
〃Y 查看表结构
DESCRIBE table_name;
〃Y 查看表中数据
SELECT 列FROM table_name 'WhERE 条件子句' 'GROUP 分组子句' 'ORDER 条件子句';
〃Y 修改表中数据
UPDATE table_name SET 列=新值 'WhERE 条件子句
〃Y 删除表中数据
DELETE FROM table_name 'WhERE 条件子句
(3)权限操作
进行权限操作的帐户必须有进行此类操作的权限。
GRANT 权限列表 ON db_name。 table_name TO 〃username〃@ 〃host〃 'IDENTIFIED BY 〃password〃'
'WITH GRANT OPTION ';
MySQL 默认的超级用户帐号有root、空,且密码都为空。这使得别有用心的人很容易从网络上用mysql。exe 连
接进入,进行破坏活动。
为提高安全性,应在安装完后,迅速更改帐号密码或权限等。
每次更改完毕,必须使用flush privileges ;语句通知服务器启用最新更改的帐号的权限验证用户。
给用户 username (若不存在就新创建一个)从主机host 以密码 password 访问数据库 db_name 中的表
table_name 的权限(ALL PRIVILEGES 、 SELECT 、UPDATE、DELETE、DROP、CREATE、ALTER 、FILE、
GRANT 等)。
赋予ALL PRIVILEGES 权限的用户,在其作用域(如某数据库之某表:db_name。table_name )内,是超级用
户。
权限列表中,权限之间用逗号分隔。
可用符号“*”通配db_name 或table_name,表示所有数据库或所有表。
可用符号“%”通配host,表示除本地机(localhost,服务器所在机器)外的所有主机。
如:
GRANT SELECT ; INSERT ; UPDATE ; DELETE ON ‘test‘。 * TO 〃aaa〃@〃%〃 IDENTIFIED BY 〃aaa〃;
FLUSH PRIVILEGES ;
PHP 讲义 第 60 页 共 90 页
…………………………………………………………Page 61……………………………………………………………
上两句的意思:授予用户aaa 对数据库test 内所有表的SELECT ; INSERT ; UPDATE ; DELETE 权限,允许他
使用密码aaa,能从本地机localhost 以外的所有主机登录服务器。
GRANT SELECT ; INSERT ; UPDATE ; DELETE ON ‘test‘。 * TO 〃aaa〃@〃localhost〃 IDENTIFIED BY 〃aaa〃;
FLUSH PRIVILEGES ;
上两句的意思:授予用户aaa 对数据库test 内所有表的SELECT ; INSERT ; UPDATE ; DELETE 权限,允许他
使用密码aaa,只能从本地机localhost 登录服务器。
SET PASSWORD FOR 〃username〃@ 〃host〃 = PASSWORD(“password”)
以加密形式,更改用户username 的密码
REVOKE ALL PRIVILEGES ON * 。 * FROM 〃username〃@ 〃host〃;
收回用户username 从主机host 访问服务器上所有数据库中所有表的所有权限。
FLUSH PRIVILEGES;
刷新权限列表,通知服务器,启用最新权限,达到使更改后的权限起作用的目的。
4。MySQL 的图形化客户端工具软件
为方便程序员或数据库系统管理员(DBA)对 MySQL 的操作,可采用一些图形化客户端工具软件。常用的有
phpMyAdmin、EMSMySQLManager 等。二者使用方法大同小异,这里只介绍phpMyAdmin。
phpMyAdmin 是一款使用PHP 语言编制的基于Web 使用的MySQL 客户端工具软件。它功能比较丰富,在广大
MySQL 爱好者中得到了普遍赞誉。
安装
该软件安装包在教学网站提供下载。
将软件包解压,放到服务器的documentroot 下,如果你设置的默认文档为index。php,则键入http://服务器地址
/phpMyAdmin 所在目录,回车即可出现phpMyAdmin 的用户登录界面。
如果初次安装好MySQL,可采用默认超级用户的帐号和密码登录:
在用户名中输入帐号(如root),在密码框中输入密码(空,什么也不输入),回车或单击确定按钮,就会进入系
统。
进入系统后,在Language 下拉框中选择适合中国人的系统显示所用的字符集:Chinese Simplified(zh),然后就
会出现中文界面:
PHP 讲义 第 61 页 共 90 页
…………………………………………………………Page 62……………………………………………………………
单击左边的主目录,界面同上,可完成一些系统级操作,如权限管理,数据库管理,导出数据,更改密码,重新
登录(登出)等。
左边主目录下边的数据库下拉框,提供了当前用户所能使用的全部数据库,可选择后进行相关操作。
具体操作,根据中文界面提示,自行学习掌握,这里不再描述。
第二节 用PHP 操纵MySQL
前面我们介绍了通过客户端工具,如mysql。exe 或phpMyAdmin,这些都是系统管理员或者程序员使用的,方便
他们管理数据库或开发工作。但是,在应用系统中,对于普通用户,基于安全的考虑,我们不能允许他们这么做。
一般的做法是通过编制程序,让用户通过程序,来操纵数据库,这样可以根据需要灵活地控制用户对数据库的操
作:既能满足实现他们存取数据的应用需求,又能最大限度地。本课程中,将介绍使用PHP 语言编制程序,让
用户在网络上,通过这种程序来将他们的数据保存到数据库中,或实现修改、删除等对数据库的操作。
1。PHP 数据类型:资源型
概念:一个资源是一个特殊变量,保存了到外部资源的一个引用。资源类型变量保存有为打开文件、数据库连接、
图形画布区域等的特殊句柄,一般用整数来标识。 这个句柄,好像一根管道,将编程语言与其引用的资源如数
据库连接起来,二者的交互,在管道中进行,管道或句柄的代号,即一个正整数标识,就是资源型数据。
资源的释放:
在一个PHP 程序的末尾,资源使用的所有外部资源都会被系统自动释放。如有需要,也可以使用某些释放资源
的函数来显式地释放资源所占内存。
资源的建立:
同资源的释放类似,资源是通过专门的函数来建立和使用的。
PHP 讲义 第 62 页 共 90 页
…………………………………………………………Page 63……………………………………………………………
2。PHP 中用于操纵MySQL 数据库的函数
PHP 将对 MySQL 数据库的操作,如连接,断开,查询,修改,删除等,都封装成了函数,有些教材中也叫接
口。
这些函数属于PHP 手册中的“MySQL 函数库”,常用的有以下几个:
〃Y mysql_error
返回上一个 MySQL 操作产生的文本错误信息。
语法格式:
string mysql_error ( 'resource link_identifier' )
返回上一个 MySQL 函数的错误文本,如果没有出错则返回 '' (空字符串)。如果没有指定连接资源号,则使用
上一个成功打开的连接从 MySQL 服务器提取错误信息。
〃Y mysql_errno
返回上一个 MySQL 操作中的错误信息的数字代码。
语法格式:
int mysql_errno ( 'resource link_identifier' )
返回上一个 MySQL 函数的错误代码,如果没有出错则返回 0 (零)。
注意以上两个函数仅返回最近一次 MySQL 函数的执行(不包括 mysql_error() 和 mysql_errno() )的错误文本
或代码,因此如果要使用它们,确保在调用另一个 MySQL 函数之前检查它们的值。
〃Y mysql_connect
打开一个到 MySQL 服务器的连接
语法格式:
mysql_connect(servername;username;password)
如果成功则返回一个 MySQL 连接标识,一般为资源型数据,失败则返回 FALSE 。
函数中参数的解释:
servername:指明MySQL 数据库所在的服务器主机名称,可用IP 表示
username:访问该服务器主机的帐号名称
password:访问该服务器的密码
注意:
①不提供参数时使用以下默认值:
servername=”” (相当于servername= 'localhost' )
username =””
password =””
servername 参数可以包括端口号,如 〃servername:port〃 。
②可以在函数名前加上 @ 来抑制失败时产生的错误信息。
③一旦脚本结束,到服务器的连接就会被关闭,这点与PHP 每到页末就释放简单变量和客户端变量相同。若要
显式(强制)地释放该资源,可用 mysql_close() 函数。应养成用完连接,及时释放连接的好习惯。
〃Y mysql_close
语法格式:
bool mysql_close ( 'resource link_identifier' )
如果成功则返回 TRUE ,失败则返回 FALSE 。
mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的连接。如果没有指定 link_identifier ,则关闭
上一个打开的连接。
通常不需要使用 mysql_close() ,因为由mysql_connect 打开的连接会在脚本执行完毕后自动关闭。但若在脚本
中间用完后,提倡使用此函数及时连接资源,以提高效率。
例子 建立和关闭MySQL 连接例子
〃Y mysql_select_db(〃test〃;server_link)
选择一个MySQL 数据库,使其成为当前数据库。一个数据库成为当前数据库,那么当前所有的操作都是针对它
的。
语法格式:
bool mysql_select_db ( string database_name '; resource link_identifier' )
如果成功则返回 TRUE ,失败则返回 FALSE 。
mysql_select_db() 设定与指定的连接标识符所关联的服务器上的当前数据库。如果没有指定连接标识符,则使
用上一个打开的连接。如果没有打开的连接,本函数将无参数调用 mysql_connect() 来尝试打开一个并使用之。
例子 mysql_select_db() 例子
〃Y mysql_query
发送一个 MySQL 查询到当前数据库,由当前数据库执行之。
语法格式:
resource mysql_query ( string query '; resource link_identifier' )
mysql_query() 向与指定的连接标识符关联的服务器中的当前数据库发送一条查询,由当前数据库执行之。
如果没有指定 link_identifier ,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用
mysql_connect() 函数来建立一个连接并使用之。
注: 查询字符串不应以分号结束。
查询结果会被缓存。
查询结果:
mysql_query() 仅对 SELECT ,SHOW ,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行
不正确则返回 FALSE 。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE ,出错时返回
FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。
以下查询语法上有错,因此 mysql_query() 失败并返回 FALSE :
以下查询当 my_col 并不是表 my_tbl 中的列时语义上有错,因此 mysql_query() 失败并返回 FALSE :
如果没有权限访问查询语句中引用的表时,mysql_query() 也会返回 FALSE 。
查询结果的查看:
查看SELECT 语句的查询结果的行数,调用 mysql_num_rows() ;
查看DELETE,INSERT,REPLACE 或 UPDATE 语句影响的行数,调用 mysql_affected_rows() 。
仅对 SELECT ,SHOW ,DESCRIBE 或 EXPLAIN 语句 mysql_query() 才会返回一个新的结果标识符,可以
将其传递给 mysql_fetch_array() 和其它处理结果表的函数。
处理完结果集后可以通过调用 mysql_free_result() 来释放与之关联的资源,尽管脚本执行完毕后会自动释放内
存。
〃Y mysql_num_rows
取得结果集中行的数目
语法格式:
int mysql_num_rows ( resource result )
mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT,UPDATE 或
者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows() 。
例子 mysql_num_rows() 例子
〃Y mysql_affected_rows
取得前一次 MySQL 操作所影响的记录行数
语法格式:
int mysql_affected_rows ( 'resource link_identifier' )
取得最近一次与 link_identifier 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。
例子 mysql_affected_rows() 例子
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!