PHP4 与 MySQL 数据库操作函数详解


Posted in PHP onDecember 06, 2006

说PHP就不能不提MySQL,而要讲MySQL,那么PHP也是必然要被提起。PHP的迅速崛起,离不开MySQL,而MySQL的广泛应用,也与PHP休戚相关。  

下面详细分析PHP4中与MySQL相关操作的函数(共32个,开头都为mysql_):  

<1>. 连接数据库服务器(database server)的函数(2个):  

(1).mysql_connect()  
格式:int mysql_connect(string [hostname] [ort],string [username],string [password]);  

参数中的port参数表示数据库服务器的端口号,一般用它的默认端口号就可以了。  
如果不填任何参数,则默认的hostname为localhost,username为root,password为空。  

函数执行成功,返回一个int 类型的连接号(link_identifier),执行失败,返回false值。  

例子:  

$connect = mysql_connect("localhost","user","password");  
if($connect) echo "Connect Successed!"; //连接成功,显示Connect Successed!  
else echo "Connect Failed!"; //连接失败,显示Connect Failed!  

?>  

在上例中,如mysql_connect()执行失败,将显示系统的错误提示,而后继续往下执行。那,该如何屏蔽这些系统的错误提示并在失败后结束程序?  
在MySQL中,允许在数据库函数之前加上@符号,屏蔽系统的错误提示,同时用die()函数给出更易理解的错误提示,然后die()函数将自动退出程序。  

上例可以改为:  

$connect = @mysql_connect("localhost","user","password") or die ("Unable to connect database server!");  

?>  

如mysql_connect()执行失败,将显示 Unable to connect database server!后,退出程序。  

(2).mysql_pconnect()  
格式:int mysql_pconnect(string [hostname] [ort],string [username],string [password]);  
此函数与(1)的mysql_connect()基本相同,区别在于:  

--------- 当数据库操作结束之后 ,由(1)的mysql_connect()建立的连接将自动关闭,而(2)的mysql_pconnect()建立的连接将继续存在,是一种稳固持久的连接。  
--------- 在(2)的mysql_pconnect(),每次连接前,都会检查是否有使用同样的hostname,use,password的连接,如果有,则直接使用这个连接号。  
--------- (1)的mysql_connect()建立的连接可以用mysql_close()关闭,而(2)的mysql_pconnect()不能用mysql_close()来关闭。  

<2>.关闭数据库连接函数(1个):  

mysql_close()  
格式:int mysql_close(int link_identifier);  
关闭由mysql_connect()函数建立的连接,执行成功,返回ture值,失败则返回false值。  

例子如下:  

$connect = @mysql_connect("hostname","user","password") or die("Unable to connect database server!");  

$close = @mysql_close($connect) or die ("Unable to close database server connect!");  

?>  

注:mysql_close()不能关闭由mysql_pconnect()函数建立的连接。  

<3>.选择数据库函数(1个):  

mysql_select_db()  
格式:int mysql_select_db(string database name , int link_identifier);  
选择指定的database name ,成功,返回1个真值(True),失败,则返回1个False值  
例子1:  
$select = mysql_select_db('forum' , $connect);  
if($select)  
{echo "connect db forum successed!";}  
else  
{echo "connect db forum failed!";}  
?>  

例子2:  
$select = mysql_select_db("forum",$connect) or die("Can not connect this DB!");  
?>  

注:此函数相当于在MySQL中的USE语句:如 USE forum  

<4>.SQL查询函数(2个):  

1、mysql_query()  
格式:int mysql_query(string sqlquery , int link_identifier);  
向服务器发一段标准SQL语句请求。如果失败,则返回一False值。  

例子:  
$connect = mysql_connect($hostname,$user,$pwd);  
$select = mysql_select_db($dbname,$connect);  
$query = mysql_query($sql , $connect);  
if($query) echo "Successed !";  
else echo "Failed !";  
?>  
此函数一定要与mysql_select_db()函数配合使用,单独使用它就没有意义了!  

2、mysql_db_query()  
格式:int mysql_db_query(string database , string sqlquery , int link_identifier);  

在此函数中必须指定数据库名database和SQL语句sqlquery,如失败则返回False。  

例子:  

$connect = mysql_connect($hostname , $user , $pwd);  
$query = mysql_db_query($dbname , $sql , $connect);  
if($query) echo "Successed !";  
else echo "Failed !";  
?>  

mysql_db_query()与mysql_query()的区别就在于前者可以不用使用mysql_select_db()来选择数据库database,而在执行SQL语句的同时,进行选择数据库。  

<5>.数据库记录操作函数(5个):  

1、mysql_fetch_array()  
格式:array mysql_fetch_array(int query);  

执行成功,返回1个数组,该数组保存有下一条记录的值,如执行失败,则返回False值。  
返回的数组既可以用下标来表示,也可以用字段名来表示。  

例子:  
$query = mysql_query($sql , $connect);  
while($arrary = mysql_fetch_array($query))  
{  

echo $array[column1]." | ".$array[column2];  
//echo $array[0]." | ".$array[1];  

}  
?>  
Note : 数组的下标是从0开始的!  

2、mysql_fetch_row()  
格式:array = mysql_fetch_row(int query);  

与1的mysql_fetch_array()函数功能基本相同。区别在于mysql_fetch_row()只能以数组下标来表示。  
成功返回1个数组,失败返回False值。  

例子:  
$query = mysql_query($sql , $connect);  
while($row = mysql_fetch_row($query))  
{  
echo $row[0] . " | " . $row[1] . " 
";  
}  
?>  
Note : mysql_fetch_row()函数只能用数组下标来表示,并从0开始。  
另:mysql_fetch_row()比mysql_fetch_array()执行速度快,并且都是对下一行数据进行读取。  

3、mysql_result()  
格式:int mysql_result(int query , int row , string filedname);  

在mysql_result()中,参数row必须从0开始,参数filedname必须是真实的字段名,不能用下标来表示。  
执行成功,返回由数据库中取出的字段的数值,失败则返回False值。  

例子:  
$query = mysql_query($sql , $connect);  
echo mysql_result($query , 0 , "column1")." 
";  
echo mysql_result($query , 1, "column1")." 
";  
echo mysql_result($query , 2, "column1")." 
";  
?>  

Note : 此函数功能少,但使用方便。  

4、mysql_fetch_object()  
格式: object mysql_fetch_object(int query)  

能对指定的字段进行循环读取,执行成功,将以对象object的形式返回数值,失败则返回False值。  

例子:  
$query = mysql_query($sql , $connect);  
while($object = mysql_fetch_object($query))  
{  
echo $object->column1 . " 
";  
echo $object->column2 . " 
";  
echo $object->column3 . " 
";  
}  
?>  

Note : mysql_fetch_object()函数执行成功后返回的是1个对象object !  
操作如下:  
$object->字段名  

5、mysql_data_seek()  
格式:int mysql_data_seek(int row , int query);  
移动游标到指定的行(row_number)  
执行成功,返回真值,失败,返回False值。  
此函数可以与mysql_fetch_array()或mysql_fetch_row()配合使用,即在使用mysql_data_seek()函数之后,就可以用mysql_fetch_array()或mysql_fetch_row()函数来显示指定的行了。  

例子:  
$query = mysql_query($sql , $connect);  
$seek = mysql_data_seek($query , 2);  
$arrary = mysql_fetch_array($query);  
echo $array[column1]." 
";  
echo $array[column2]." 
";  
?>  

<6>.数据库级database的操作函数(2个):  

1、mysql_create_db()  
格式:int mysql_create_db(string database name , int link_identifier);  

通过程序来建立1个数据库database,当然你也可以用mysql_query()或者mysql_db_query()函数来建立或删除database  

但我们可以用这个函数更为方便地建立1个database。  
成功返回1个真值,失败,则返回1个false。  

例子:  

$connect = mysql_connect("$hostname","$user","$pwd");  
$create = mysql_create_db("dbtest" , $connect);  
if($create) echo "create database dbtest successed!";  
else echo "create database dbtest failed!";  

?>  

2、mysql_drop_db()  
格式:int mysql_drop_db(string database name , int link_identifier);  

通过程序来删除1个数据库database。  

但我们可以用这个函数更为方便地删除1个database。  
成功返回1个真值,失败,则返回1个false。  

例子:  

$connect = mysql_connect("$hostname","$user","$pwd");  
$create = mysql_drop_db("dbtest" , $connect);  
if($create) echo "drop database dbtest successed!";  
else echo "drop database dbtest failed!";  

?>  

Note : 如用mysql_query()或mysql_db_query(),则SQL语句应为:  
(1)create database dbtest  
(2)drop database dbtest  

7) 数据库信息函数(2个):  

1、mysql_fetch_field()  
格式:object mysql_fetch_field(int query , int [field_offset]);  

返回1个对象,即一哈希表,下标有:  
table : 表名  
name : 字段名  
max_length : 该字段的最大长度  
not_null : 字段为not null则返回1,否则返回0  
primary_key : 字段为primary key则返回1,否则返回0  
unique_key : 字段为unique key则返回1,否则返回0  
multiple_key : 字段为非unique key则返回1,否则返回0  
numeric : 字段为numeric则返回1,否则返回0  
blob : 字段为blob则返回1,否则返回0  
type : 字段的类型  
unsigned : 字段为unsigned则返回1,否则返回0  
zerofill : 字段为zero filled则返回1,否则返回0  

引用格式为:对象名->下标名  

使用此函数可以得到表名、字段名、类型.......  

例子:  

$query = mysql_query($sql , $connect);  
while($object = mysql_fetch_field($query))  
{  
echo "table name : ".$object->table." 
";  
echo "field name : ".$object->name." 
";  
echo "primary key : ".$object->primary_key." 
";  
echo "not null : ".$object->not_null." 
";  
echo "field type : ".$object->type." 
";  
echo "field max length : ".$object->max_length." 
";  
}  
?>  

Note : 哈希表的是从0坐标开始的,即第一个字段为哈希表中的0项。  
如果我们想直接得到哈希表的第三项即第三个字段的信息,可用如下格式:  
$query = mysql_query($sql , $connect);  
$object = mysql_fetch_field($query , 2);  
echo "table name : ".$object->table." 
";  
echo "field name : ".$object->name." 
";  
echo "primary key : ".$object->primary_key." 
";  
echo "not null : ".$object->not_null." 
";  
echo "field type : ".$object->type." 
";  
echo "field max length : ".$object->max_length." 
";  
?>  

其实这也可以通过下面这个函数来达到同样的目的。  

2、mysql_field_seek()  
格式:int mysql_field_seek(int $query , int field_offset);  

将游标移到指定的字段上。  
例子:  

$query = mysql_query($sql , $connect);  
$seek = mysql_field_seek($query , 2);  
$object = mysql_fetch_field($query);  
echo "table name : ".$object->table." 
";  
echo "field name : ".$object->name." 
";  
echo "primary key : ".$object->primary_key." 
";  
echo "not null : ".$object->not_null." 
";  
echo "field type : ".$object->type." 
";  
echo "field max length : ".$object->max_length." 
";  
?>  

这样也达到与上例同样的要求。  

8) 取数据库名和表名(2个):  

1、mysql_list_dbs()  
格式: int mysql_list_dbs(int link_identifier);  
取得所有可用的数据库名(database name)。  

例子:  

$connect = mysql_connect($host , $usr ,$pwd);  
$dbs = mysql_list_dbs($connect);  
$rows = mysql_num_rows($dbs);  
echo "database total : ".$rows;  
$i = 0;  
while($i<$rows)  
{  
$db_name[$i] = mysql_tablename($dbs , $i);  
echo $db_name[$i];  
$i++;  
}  
?>  
即可依次显示出MySQL中所有的数据库名字(database name )。  
Note : 相当于MySQL中的 show databases命令  

2、mysql_list_tables()  
格式:int mysql_list_tables(string database name);  
显示该数据库下所有的表的名字Table name。  

例子:  

$connect = mysql_connect($host , $usr , $pwd);  
$tables = mysql_list_tables("mysql");  
$rows = mysql_num_rows($tables);  
echo "Table total : ".$rows;  
$i = 0;  
while($i<$rows)  
{  
$table_name[$i] = mysql_tablename($tables , $i);  
echo $table_name[$i];  
$i++;  
}  

?>  

即可依次显示出mysql下所有的表的名字  
Note : 相当于MySQL中的 show tables命令(先要用 use mysql命令选中1个数据库)

PHP 相关文章推荐
PHP5 安装方法
Jan 15 PHP
PHP服务器页面间跳转实现方法
Aug 02 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
分享PHP守护进程类
Dec 30 PHP
全面了解PHP中的全局变量
Jun 17 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
php获取linux命令结果的实例
Mar 13 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 PHP
php实例化对象的实例方法
Nov 17 PHP
PHP 5.0 Pear安装方法
Dec 06 #PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 #PHP
PHP 开发工具
Dec 06 #PHP
一些常用的php函数
Dec 06 #PHP
PHP语法速查表
Dec 06 #PHP
[转帖]PHP世纪万年历
Dec 06 #PHP
一个PHP日历程序
Dec 06 #PHP
You might like
做个自己站内搜索引擎
2006/10/09 PHP
PHP4.04简明安装
2006/10/09 PHP
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
解析PHP提交后跳转
2013/06/23 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
[00:16]热血竞技场
2019/03/06 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
Flask框架信号用法实例分析
2018/07/24 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
Eclipse面试题
2014/03/22 面试题
电子商务专业个人的自我评价
2013/11/19 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
汽车转让协议书范本
2014/12/07 职场文书
学校食堂管理制度
2015/08/04 职场文书