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 相关文章推荐
php基础知识:函数基础知识
Dec 13 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
PHP加密解密类实例分析
Apr 20 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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
用PHP实现多级树型菜单
2006/10/09 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
很可爱的输入框
2008/08/03 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Python while 循环使用的简单实例
2016/06/08 Python
Python使用django搭建web开发环境
2017/06/09 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
汉语言文学职业规划
2014/02/14 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
小学生运动会报道稿
2014/09/12 职场文书