PHP访问MySQL数据库函数简介
1. 进行数据库连接
连接数据库服务器,就是客户端向己运行的数据库服务器发出连接请求,
成功以后就可以对数据库进行相应操作,由于用户的权限不同,所能进
行的操作也不一样。PHP提供了一系列MySQL操作的函数,用来连接数据
库的函数有两个,分别是:mysql_connect()和mysql_pconnect()。
下面在对常用的几个函数作简单介绍后,用一个例子来说明在PHP脚本中
自动连接数据库的方法。
1.1 mysql_connect函数
函数调用格式如下:
int mysql_connect([string hostname] [:port][, string usename]
[, string password]);
参数列表中的port参数表示数据库服务器的端口号,一般用它的默认端
口3306就可以了。如果不填任何参数,则默认的hostname为"localhost",
usname为"root", password为空。当然,用户可以指定自己所要连接的
主机名、用户名、用户密码,来连接指定的数据库。
函数执行成功,返回一个int类型的连接号,执行失败,返回false值。
例1.1:
<?PHP
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
if($connect)
{
echo "连接成功"; //连接成功,显示“连接成功";
}
else
{
echo "连接失败"; //连接失败,显示"连接失败";
}
?>
在上例中,若mysql_connect函数执行失败,将显示相应的错误提示,
而后继续往下执行。如果想屏蔽系统的错误提示并在失败后结束程序
时,显示自己所需要的错误提示。可以在数据库函数之前加上@符号
屏蔽系统的错误提示,同时用die函数给出更易理解的错误提示,并自
动退出程序。
上例可以改为:
<?php
//连接数据库服务器,屏蔽前面的出错信息,显示后面的出错信息。
$connect = @mysql_connect("localhost","user","passwrod") or
die(“不能连接到数据库服务器!");
?>
若mysql_connect函数执行失败,将显示"不能连接到数据库服务器!",
退出程序。
1.2 mysql_pconnect函数
函数调用格式如下:
int mysql_pconnect([string hostname] [:port] [, string username]
[, string password] );
此函数与mysql_connect函数功能基本相同,区别在于:
1. 当数据库操作结束后,由mysql_connect函数建立的连接将自动关闭,
而mysql_pconnect函数建立的连接将继续存在,是一种稳固持久的连接。
2. 使用mysql_pconnect函数进行连接时,每次连接前,都会检查是否有
使用同样的hostname、user和password的连接,如果有,则直接使用
这个连接号。
3. 函数mysql_connect建立的连接可以用mysql_close函数关闭,而mysql_pconnect
函数建立的连接则不能用mysql_close函数来关闭。
1.3 mysql_close函数
函数的调用格式如下:
int mysql_close(int link_identifider);
本函数关闭由mysql_connect函数建立的连接,执行成功,返回TRUE,失
败则返回FALSE。
例1.2:
<?php
//连接数据库服务器,屏蔽前面的出错信息,显示后面的出错信息。
$connect = @mysql_connect("hostname","user","password") or
die("不能连接到数据库服务器!");
//关闭与数据库建立的连接
$close = @mysql_close($connect) or
die("不能关闭与数据库建立的连接!“);
?>
注意:
mysql_close函数不能关闭由mysql_pconnect函数建立的连接.
2. 进行数据库查询
发送SQL查询语句前首先需要连接数据库,并选择要操作的数据库,下面介绍
相应的函数与查询
2.1 选择数据库
选择数据库的操作由mysql_select_db函数完成。函数的调用格式如下:
int mysql_select_db(string databasename,int link_identifier);
其中的参数link_identifier为连接数据库成功所返回的连接号。databasename
指定数据库名称,执行成功返回TRUE,失败则返回FALSE。
例1.3:
<?php
//连接数据库服务器,屏蔽前面的出错信息,显示后面的出错信息。
$connect = @mysql_connect("hostname","user","password") or
die("不能连接到数据库服务器!");
//选择数据库,此处的数据库study为数据库名。
$select = mysql_select_db('study', $connect);
//显示选择数据库是否成功的信息
if($select)
{
echo "选择数据库成功!";
}
else
{
echo "选择数据库失败!";
}
?>
例1.4:
<?php
//连接数据库服务器,屏蔽前面的出错信息,显示后面的出错信息。
$connect = @mysql_connect("hostname","user","password") or
die("不能连接到数据库服务器!");
//选择数据库,调用die()函数显示出错信息。
$select = @mysql_select_db('study', $connect) or
die("不能连接到选择的数据库!");
?>
2.2 查询数据库
查询数据库的操作由mysql_query()函数完成。函数的调用格式如下:
int mysql_query(string sqlquery, int link_identifier);
该函数向服务器发一段标准SQL语句请求数据。如果查询失败,则返回一
FALSE值,成功则返回查询结果。除非SQL语句为select语句,否则对返回
值可以根本不用理会。
例1.5:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
//显示操作成功与否的信息.
if($query)
{
echo "查询成功";
}
else
{
echo "查询失败";
}
?>
如果操作成功,函数mysql_query将返回一个真值,那么就会显示"操作成
功";如果操作失败,函数mysql_query返回FALSE,那么则会显示“操作失败
”。这在程序设计中是非常有用的,因为在mysql_query函数操作失败时,系
统的解释程序不能及时反应出问题,而是执行了很多步才可以发现问题,这
在程序调试时是非常麻烦的。
此函数一定要与mysql_select_db函数配合使用,不能单独使用.
查询操作还可用mysql_db_query函数完成。函数的调用格式如下:
int mysql_db_query(string database,string sqlquery, int link_identifier);
在此函数中必须指定数据库名databse和SQL语句sqlquery,如失败则返回
FALSE。若SQL请求语句为select语句,将返回一个结果值,否则对返回值
可以根本不用理会。
例 1.6
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_db_query("study",$sql, $connect);
//显示操作成功与否的信息.
if($query)
{
echo "数据库查询成功";
}
else
{
echo "数据库查询失败";
}
?>
mysql_db_query函数与mysql_query函数的区别在于前者可以不用使用
mysql_select_db函数来选择数据库,而在执行SQL语句的同时选择数据
库。后者则需要与mysql_select_db函数配合使用。
3. 写入记录
向表中写入一条记录,可以使用insert语句。仍使用mysql_query函数或
mysql_db_query函数完成。
例1.7: 向数据库中的表添加记录
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立数据库数据插入语句。
$sql="insert into student values('870013',‘群星’,'男')";
//写入记录
$query = mysql_query($sql, $connect);
//根据记录写入成功与否,输出相应的返回信息.
if($query)
{
echo "写入成功";
}
else
{
echo "写入失败";
exit;
}
?>
4. 删除记录
删除在数据库操作,也是最常用的操作。删除记录需要使用delete语句。
例1.8: 从表中删除记录
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立数据库数据删除语句。
$sql="delete from student where id='870013'";
//进行删除查询。
$query = mysql_query($sql, $connect);
//根据记录删除成功与否,输出相应的返回信息.
if($query)
{
echo "数据删除成功";
}
else
{
echo "数据删除失败";
exit;
}
?>
5. 创建数据库
用PHP创建数据库表是比较简单的,可由mysql_create_db函数完成。函数的
调用格式如下:
int mysql_create_db(string database_name, int link_identifier);
其中datdabasename为用户要创建的数据库名称,link_identifier为连接服
务器成功后返回的连接号。成功返回TRUE,失败返回FALSE。
例1.9:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//建立一个数据库dbtest。
$create=mysql_create_db("dbtest", $connect);
//根据数据库是否创建成功在页面上显示相应的信息。
if($create)
{
echo "数据库dbtest创建成功!";
}
else
{
echo "数据库dbtest创建失败!";
}
?>
若数据库不再需要,可用mysql_drop_db函数将其删除。函数的调用格式
如下:
int mysql_drop_db(string databasename, int link_identifier);
该函数删除数据库。databasename为要删除的数据库名字,link_identifier
为连接数据库服务器成功返回的连接号,删除成功返回true,失败返回false.
例1.10:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//删除数据库dbtest。
$drop = mysql_drop_db("dbtest", $connect);
//根据删除成功与否在页面上返回相应的信息。
if($create)
{
echo "删除数据库dbtest成功!";
}
else
{
echo "删除数据库dbtest失败!";
}
?>
数据库创建后,用户还可以通过mysql_query函数或mysql_db_query函数
向其中添加表,只需将提交的查询语句设置为创建表的SQL语句即可,与
向表中添加记录的操作类似,在些不再赘述!
5. 获取数据库信息
本节介绍9个常用的数据库信息获取函数。
1. mysql_fetch_field函数
函数调用格式如下:
object mysql_fetch_field(int query, [ int field_offset ] );
该函数将数据库信息返回到一个哈希表,其结构见表5-1。
表9-1 存放数据库信息的哈希表
项目 内容
---------------------------------------------------
table 表名
name 字段名
max_length 该字段的最大长度
not_null 字段为not null则返回1,否则返回0
prinary_key 字段为prinary key则返回1,否则返回0
unique_key 字段为unique key则返回1,否则返回0
multiple_key 字段为非unique key则返回1,否则返回0
numeric 字段为非unique key则返回1,否则返回0
blob 字段为blob则返回1,否则返回0
type 字段的类型
unsigned 字段为unsigned则返回1,否则返回0
zerofill 字段为zero filled则返回1,否则返回0
----------------------------------------------------
使用此函数可以得到表名、字段名、类型等信息。
例1.11:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
while($object = mysql_fetch_field($query))
{
echo "table name: ".$object->table."<br>";
echo "field name: ".$object->name."<br>";
echo "primary key: ".$object->primary_key."<br>";
echo "nto null: ".$object->not_null."<br>";
echo "field type: ".$object->type."<br>";
echo "field max length: ".$object->max_length."<br>";
}
?>
注意:
哈希表的下标是从0开始的,即第一个字段为哈希表中的0项。
如果想直接得到哈希表的第三项即第三个字段的信息,可用如下调用格式:
$object = mysql_fetch_field($query, 2);
来实现,也可以使用mysql_field_seek函数来达到同样的目的。
2. mysql_field_seek函数
函数调用格式如下:
int mysql_field_seek(int $query, int field_offset);
该函数将游标移到指定的字段。
例1.12:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
//将游标指定到第二个字段上。
$seek = mysql_field_seek($query, 2);
//开始读取字段信息,信息是从第二个字段处开始显示的。
$object = mysql_fetch_field($query);
echo "table name: ".$object->table."<br>";
echo "field name: ".$object->name."<br>";
echo "primary key: ".$object->primary_key."<br>";
echo "nto null: ".$object->not_null."<br>";
echo "field type: ".$object->type."<br>";
echo "field max length: ".$object->max_length."<br>";
?>
3. mysql_list_dbs函数
函数调用格式如下:
int mysql_list_dbs(int link_identifier);
取得数据库服务器中所有可用的数据库名。
例1.13: 显示MySQL服务器中所有的数据库名。
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
$dbs = mysql_list_dbs($connect); //从数据库中取得数据库名信息
$rows= mysql_num_rows($dbs); //计算数据库服务器中己创建数据库的个数
echo "database total: ".$rows; //显示上面的计算结果
$i = 0; //将显示数初值设为0
while($i<$rows) //逐个读取数据库的名字
{
$db_name[$i] = mysql_tablename($dbs, $i); //读取第$i个数据库名
echo "$db_name[$i]/n"; //将数据库名显示在页面上
$i++; //序号加1
}
?>
4. mysql_list_tables函数
函数调用格式如下:
int mysql_list_tables(int databasename);
该函数返回指定数据库中所有表的名字。
例1.14:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
$tables = mysql_list_tables("mysql"); //取得数据库中数据表的信息
$rows= mysql_num_rows($tables); //计算数据库中数据表的个数
echo "table total: ".$rows; //显示总的数据表的个数
$i = 0; //将显示数初值设为0
while($i<$rows) //逐个读取数据表的表名
{
$table_name[$i] = mysql_tablename($tables, $i); //读取第$i个数据表的表名
echo "$table_name[$i]/n"; //显示数据表的表名
$i++; //序号加1
}
?>
注意:
该函数相当于MySQL中的show tables命令(先要用use mysql命令选中一个数据库)。
5. mysql_fetch_array函数
函数调用格式如下:
array mysql_fetch_array(int query);
执行成功,返回一个数组,该数组保存有下一条记录的值,如执行失败,
则返回FALSE值。返回的数组既可以用下标来表示,也可以用字段名来表示。
例 1.15:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
//依次读取数据表中的数据信息。
while($array = mysql_fetch_array($query))
{
//显示所读取的信息
echo $array["name"]." ".$array["sex"]."<br>";
//上面的语句也可改为echo $array[1]." ".$array[2]."<br";
}
?>
6. mysql_fetch_row函数
函数调用格式如下:
array mysql_fetch_row(int query);
本函数与mysql_fetch_array函数功能基本相同。区别在于mysql_fetch_row
函数返回的数组只能以数组下标来表示。成功返回一个数组,失败返回FALSE值。
例 1.16:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
//依次从数据库中读取数据信息。
while($row = mysql_fetch_row($query))
{
//把查询到的信息输出到页面上
echo $row[0]." ".$row[1]." ".$row[2]."<br>";
}
?>
注意:
mysql_fetch_row()函数只能用数组下标来表示,并从0开始。mysql_fetch_row()
比mysql_fetch_array()执行速度快,并且都是对下一行数据进行读取。
7. mysql_result函数
函数调用格式如下:
int mysql_result(int query, int row, string fieldname);
参数row从0开始,参数fieldname必须是真实的字段名,不能用下标来表示。
若执行成功,返回由数据库中取出的字段的数值,失败则返回FALSE值。
例 1.17:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
//显示查询到的结果。
echo mysql_result($query, 0, "id")." ";
echo mysql_result($query, 0, "name")." ";
echo mysql_result($query, 0, "sex")."<br>";
?>
8. mysql_fetch_object函数
函数调用格式如下:
object mysql_fetch_object(int query);
能对指定的字段进行循环读取,执行成功,将以对象object的形式返回数
值,失败则返回FALSE值。
例 1.18:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
//依次循环读出查询结果,输出到页面上。
while($object = mysql_fetch_object($query))
{
echo $object->id."<br>";
echo $object->name."<br>";
echo $object->sex."<br>";
}
?>
注意:
mysql_fetch_object函数执行成功后返回的是1个对象object。引用方法
如下:
$object->字段名
9. mysql_data_seek函数
函数调用格式如下:
int mysql_data_seek(int query, int row);
该函数将游标移动到指定的行。若执行成功返回真值,失败则返回FALSE值。
此函数可以与mysql_fetch_array或mysql_fetch_row配合使用,即在使用
mysql_data_seek函数之后,就可以用mysql_fetch_array或mysql_fetch_row
函数来显示指定的行了。
例 1.19:
<?php
//连接数据库服务器
$connect = mysql_connect("localhost","user","password");
//选择数据库
$select = mysql_select_db("study",$connect);
//建立一个查询语句,显示数据库study中表student的信息。
$sql="select * from student";
//查询数据库操作
$query = mysql_query($sql, $connect);
//将游标指定到第二个数据上
$seek = mysql_data_seek($query, 2);
//读取查询到的数据信息
$array = mysql_fetch_array($query);
//将读取到的数据信息显示在页面上
echo $array["id"]."<br>";
echo $array["name"]."<br>";
echo $array["sex"]."<br>";
?>