PHP4手册:函数库及函数(三十二) MySQL 资料库函式库


--------------------------------------------------------------------------------
MySQL 资料库函式库
--------------------------------------------------------------------------------
本函式库共有 32 个函式
本函式库供存取 MySQL 资料库。有关 MySQL 的细节,及下载 MySQL 资料库,请到这个网址 http://www.mysql.com。而网路上也有许多提供处理 MySQL 的使用者介面程式,建议到 http://www.phpwizard.net/phpMyAdmin 下载 phpMyAdmin,可以使用浏览器操作及管理 MySQL。整套 phpMyAdmin 程式,是用 PHP3 完成的,亦可同时研究 PHP3 与 MySQL 的连结。
mysql_affected_rows: 得到 MySQL 最后操作影响的列数目。
mysql_close: 关闭 MySQL 伺服器连线。
mysql_connect: 开启 MySQL 伺服器连线。
mysql_create_db: 建立一个 MySQL 新资料库。
mysql_data_seek: 移动内部传回指标。
mysql_db_query: 送查询字串 (query) 到 MySQL 资料库。
mysql_drop_db: 移除资料库。
mysql_errno: 传回错误讯息代码。
mysql_error: 传回错误讯息。
mysql_fetch_array: 传回阵列资料。
mysql_fetch_field: 取得栏位资讯。
mysql_fetch_lengths: 传回单列各栏资料最大长度。
mysql_fetch_object: 传回物件资料。
mysql_fetch_row: 传回单列的各栏位。
mysql_field_name: 传回指定栏位的名称。
mysql_field_seek: 设定指标到传回值的某栏位。
mysql_field_table: 获得目前栏位的资料表 (table) 名称。
mysql_field_type: 获得目前栏位的型态。
mysql_field_flags: 获得目前栏位的旗标。
mysql_field_len: 获得目前栏位的长度。
mysql_free_result: 释放传回占用记忆体。
mysql_insert_id: 传回最后一次使用 INSERT 指令的 ID。
mysql_list_fields: 列出指定资料表的栏位 (field)。
mysql_list_dbs: 列出 MySQL 伺服器可用的资料库 (database)。
mysql_list_tables: 列出指定资料库的资料表 (table)。
mysql_num_fields: 取得传回栏位的数目。
mysql_num_rows: 取得传回列的数目。
mysql_pconnect: 开启 MySQL 伺服器长期连线。
mysql_query: 送出一个 query 字串。
mysql_result: 取得查询 (query) 的结果。
mysql_select_db: 选择一个资料库。
mysql_tablename: 取得资料表名称。
--------------------------------------------------------------------------------
函式:mysql_affected_rows()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_affected_rows
得到 MySQL 最后操作影响的列数目。
语法: int mysql_affected_rows(int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可得到 MySQL 最后查询操作 INSERT、UPDATE 或 DELETE 所影响的列 (row) 数目。若最后的查询 (query) 是使用 DELETE 而且没有使用 WHERE 命令,则会删除全部资料,本函式将传回 0。若最后使用的是 SELECT,则用本函式不会得到预期的数目,因为要改变 MySQL 资料库本函式才有效,欲得到 SELECT 传回的数目需使用 mysql_num_rows() 函式。
--------------------------------------------------------------------------------
函式:mysql_close()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_close
关闭 MySQL 伺服器连线。
语法: int mysql_close(int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式关闭与 MySQL 资料库伺服器的连线。若无指定参数 link_identifier 则会关闭最后的一笔连线。用 mysql_pconnect() 连线则无法使用本函式关闭。实际上本函式不是一定需要的,当 PHP 整页程式结束后,将会自动关闭与资料库的非永久性 (non-persistent) 连线。成功传回 true、失败传回 false 值。
参考
mysql_connect() mysql_pconnect()
--------------------------------------------------------------------------------
函式:mysql_connect()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_connect
开启 MySQL 伺服器连线。
语法: int mysql_connect(string [hostname] [:port], string [username], string [password]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式建立与 MySQL 伺服器的连线。其中所有的参数都可省略。当使用本函式却不加任何参数时,参数 hostname 的内定值为 localhost、参数 username 的内定值为 PHP 执行行程的拥有者、参数 password 则为空字串 (即没有密码)。而参数 hostname 后面可以加冒号与埠号,代表使用那个埠与 MySQL 连接。当然在使用资料库时,早点使用 mysql_close() 将连线关掉可以节省资源。
使用范例
这是一位未具名网友提供的范例 (18-Feb-1999)
$dbh = mysql_connect('localhost:3306','mcclain','standard');
mysql_select_db('admreqs');
$query = "insert into requests(date, request, email, priority,status) values (NOW(),'$description', '$email', '$priority', 'NEW')";
$res = mysql_query($query, $dbh);
$query = "select max(id) from requests";
$res = mysql_query($query, $dbh);
$err = mysql_error();
if($err){
echo "发生错误,请通知站长";
}
$row = mysql_fetch_row($res);
echo "未来您使用的号码为: ".$row[0];
?>
参考
mysql_close() mysql_pconnect()
--------------------------------------------------------------------------------
函式:mysql_create_db()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_create_db
建立一个 MySQL 新资料库。
语法: int mysql_create_db(string database name, int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来建立新的资料库 (database)。在建立前,必须先与伺服器连线。
参考
mysql_drop_db()
--------------------------------------------------------------------------------
函式:mysql_data_seek()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_data_seek
移动内部传回指标。
语法: int mysql_data_seek(int result_identifier, int row_number);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可移动内部传回的列指标到指定的 row_number 去。之后若使用 mysql_fetch_row() 可以传回新列的值。成功传回 true、失败则传回 false。
--------------------------------------------------------------------------------
函式:mysql_db_query()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_db_query
送查询字串 (query) 到 MySQL 资料库。
语法: int mysql_db_query(string database, string query, int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来送出查询字串 (query) 到后端的 MySQL 资料库中。而可省略的参数 link_identifier 若不存在,程式会自动寻找其它 mysql_connect() 连线后的连线代码。发生错误时会传回 false,其它没错误时则传回它的传回代码。
参考
mysql_connect()
--------------------------------------------------------------------------------
函式:mysql_drop_db()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_drop_db
移除资料库。
语法: int mysql_drop_db(string database_name, int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式移除已存在的资料库。成功传回 true、失败则传回 false。
参考
mysql_create_db()
--------------------------------------------------------------------------------
函式:mysql_errno()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_errno
传回错误讯息代码。
语法: int mysql_errno(int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到 MySQL 资料库伺服器的错误代码。通常用在 PHP 网页程式开发阶段,作为 PHP 与 MySQL 的除错用。
使用范例
mysql_connect("marliesle");
echo mysql_errno().": ".mysql_error()."
";
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."
";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."
";
?>
参考
mysql_error()
--------------------------------------------------------------------------------
函式:mysql_error()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_error
传回错误讯息。
语法: string mysql_error(int [link_identifier]);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式可以得到 MySQL 资料库伺服器的错误讯息。通常用在 PHP 网页程式开发阶段,与 mysql_errno() 一起作为PHP 与 MySQL 的除错用。
参考
mysql_errno()
--------------------------------------------------------------------------------
函式:mysql_fetch_array()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_fetch_array
传回阵列资料。
语法: array mysql_fetch_array(int result, int [result_typ]);
传回值: 阵列
函式种类: 资料库功能
内容说明
本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料,则传回 false 值。而本函式可以说是 mysql_fetch_row() 的加强函式,除可以将传回列及数字索引放入阵列之外,还可以将文字索引放入阵列中。若是好几个传回栏位都是相同的文字名称,则最后一个置入的栏位有效,解决方法是使用数字索引或者为这些同名的栏位 (column) 取别名 (alias)。值得注意的是使用本函式的处理速度其实不会比 mysql_fetch_row() 函式慢,要用哪个函式还是看使用的需求决定。参数 result_typ 是一个常数值,有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。
使用范例
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_array($result)) {
echo $row["user_id"];
echo $row["fullname"];
}
mysql_free_result($result);
?>
--------------------------------------------------------------------------------
函式:mysql_fetch_field()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_fetch_field
取得栏位资讯。
语法: object mysql_fetch_field(int result, int [field_offset]);
传回值: 物件
函式种类: 资料库功能
内容说明
本函式传回的物件资料为 result 的栏位 (Column) 资讯。传回物件的属性如下:
name - 栏位名称
table - 栏位所在表格的资料表名称
max_length - 栏位的最大长度
not_null - 若为 1 表示本栏位不能是空的 (null)
primary_key - 若为 1 表示本栏位是主要键 (primary key)
unique_key - 若为 1 表示本栏位为不可重覆键 (unique key)
multiple_key - 若为 1 表示本栏位为可重覆键 (non-unique key)
numeric - 若为 1 表示本栏位为数字型态 (numeric)
blob - 若为 1 表示本栏位为位元型态 (BLOB)
type - 栏位型态
unsigned - 若为 1 表示本栏位为无记号 (unsigned)
zerofill - 若为 1 表示本栏位为被零填满 (zero-filled)
参考
mysql_field_seek()
--------------------------------------------------------------------------------
函式:mysql_fetch_lengths()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_fetch_lengths
传回单列各栏资料最大长度。
语法: array mysql_fetch_lengths(int result);
传回值: 阵列
函式种类: 资料库功能
内容说明
本函式将 mysql_fetch_row() 处理过的最后一列资料的各栏位资料最大长度放在阵列变数之中。若执行失败则传回 false 值。传回阵列的第一笔资料索引值是 0。
参考
mysql_fetch_row()
--------------------------------------------------------------------------------
函式:mysql_fetch_object()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_fetch_object
传回物件资料。
语法: object mysql_fetch_object(int result, int [result_typ]);
传回值: 物件
函式种类: 资料库功能
内容说明
本函式用来将查询结果 result 拆到物件变数中。使用方法和 mysql_fetch_array() 几乎相同,不同的地方在于本函式传回资料是物件而不是阵列。若 result 没有资料,则传回 false 值。另外值得注意的地方是,取回的物件资料的索引只能是文字而不能用数字,这是因为物件的特性。物件资料的特性中所有的属性 (property) 名称都不能是数字,因此只好乖乖使用文字字串当索引了。参数 result_typ是一个常数值,有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。关于速度方面,本函式的处理速度几乎和 mysql_fetch_row() 及 mysql_fetch_array() 二函式差不多,要用哪个函式还是看使用的需求决定。
使用范例
下面的例子示范如使用传回的物件。
mysql_connect($host,$user,$password);
$result = mysql_db_query("MyDatabase","select * from test");
while($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>
参考
mysql_fetch_array() mysql_fetch_row()
--------------------------------------------------------------------------------
函式:mysql_fetch_row()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_fetch_row
传回单列的各栏位。
语法: array mysql_fetch_row(int result);
传回值: 阵列
函式种类: 资料库功能
内容说明
本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引,第一个的索引值是 0。若 result 没有资料,则传回 false 值。
参考
mysql_fetch_array() mysql_fetch_object() mysql_data_seek() mysql_fetch_lengths() mysql_result()
--------------------------------------------------------------------------------
函式:mysql_field_name()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_field_name
传回指定栏位的名称。
语法: string mysql_field_name(int result, int field_index);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式用来取得指定栏位的名称。
使用范例
mysql_field_name($result,2);
--------------------------------------------------------------------------------
函式:mysql_field_seek()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_field_seek
设定指标到传回值的某栏位。
语法: int mysql_field_seek(int result, int field_offset);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式设定目前的指标到传回值的特定栏位中。
参考
mysql_fetch_field()
--------------------------------------------------------------------------------
函式:mysql_field_table()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_field_table
获得目前栏位的资料表 (table) 名称。
语法: string mysql_field_table(int result, int field_offset);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式可以得到目前所在栏位的资料表名。
--------------------------------------------------------------------------------
函式:mysql_field_type()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_field_type
获得目前栏位的型态。
语法: string mysql_field_type(int result, int field_offset);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式可以得到目前所在栏位的型态格式。传回的字串为栏位的型态,包括了 int、real、string、blob....等等,详见 MySQL 的相关文件中有关于型态的部份。
使用范例
mysql_connect("localhost:3306");
mysql_select_db("wisconsin");
$result = mysql_query("SELECT * FROM onek");
$fields = mysql_num_fields($result);
$rows = mysql_num_rows($result);
$i = 0;
$table = mysql_field_table($result, $i);
echo "资料表 '".$table."' 有 ".$fields." 栏及 ".$rows." 列。
";
echo "本资料表的栏位如下
";
while ($i < $fields) {
$type = mysql_field_type ($result, $i);
$name = mysql_field_name ($result, $i);
$len = mysql_field_len ($result, $i);
$flags = mysql_field_flags ($result, $i);
echo $type." ".$name." ".$len." ".$flags."
";
$i++;
}
mysql_close();
?>
--------------------------------------------------------------------------------
函式:mysql_field_flags()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_field_flags
获得目前栏位的旗标。
语法: string mysql_field_flags(int result, int field_offset);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式可以得到目前所在栏位的旗标。若一个栏位有数种属性旗标,则传回的旗标为这些属性连起来的字串,每个属性都用空格隔开,可以使用 explode() 切开这些字串。传回的旗标可能是:not_null、primary_key、unique_key、multiple_key、blob、unsigned、zerofill、binary、enum、auto_increment、timestamp。
--------------------------------------------------------------------------------
函式:mysql_field_len()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_field_len
获得目前栏位的长度。
语法: int mysql_field_len(int result, int field_offset);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到目前所在栏位的长度。
--------------------------------------------------------------------------------
函式:mysql_free_result()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_free_result
释放传回占用记忆体。
语法: boolean mysql_free_result(int result);
传回值: 布林值
函式种类: 资料库功能
内容说明
本函式可以释放目前 MySQL 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。PHP 程式会在结束时自动释放
--------------------------------------------------------------------------------
函式:mysql_insert_id()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_insert_id
传回最后一次使用 INSERT 指令的 ID。
语法: int mysql_insert_id(int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到最后一次使用 INSERT 到 MySQL 资料库的执行 ID。sleibowitz@btcwcu.org (13-May-1999) 指出在 PHP 3.0.7 版用 REPLACE 也和使用 INSERT 一样,可以使用本函式获得 ID。
--------------------------------------------------------------------------------
函式:mysql_list_fields()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_list_fields
列出指定资料表的栏位 (field)。
语法: int mysql_list_fields(string database_name, string table_name, int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到指定的资料表的所有栏位。传回的栏位资讯可以供 mysql_field_flags()、mysql_field_len()、mysql_field_name() 及 mysql_field_type() 等函式使用。若有错误则传回 -1。
--------------------------------------------------------------------------------
函式:mysql_list_dbs()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_list_dbs
列出 MySQL 伺服器可用的资料库 (database)。
语法: int mysql_list_dbs(int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到 MySQL 伺服器的可用资料库。
--------------------------------------------------------------------------------
函式:mysql_list_tables()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_list_tables
列出指定资料库的资料表 (table)。
语法: int mysql_list_tables(string database, int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到指定资料库中的所有资料表名称。
--------------------------------------------------------------------------------
函式:mysql_num_fields()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_num_fields
取得传回栏位的数目。
语法: int mysql_num_fields(int result);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到传回栏位的数目。
参考
mysql_db_query() mysql_query() mysql_fetch_field() mysql_num_rows()
--------------------------------------------------------------------------------
函式:mysql_num_rows()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_num_rows
取得传回列的数目。
语法: int mysql_num_rows(int result);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到传回列的数目。
参考
mysql_db_query() mysql_query() mysql_fetch_row()
--------------------------------------------------------------------------------
函式:mysql_pconnect()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_pconnect
开启 MySQL 伺服器长期连线。
语法: int mysql_pconnect(string [hostname] [:port], string [username], string [password]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式和 mysql_connect() 雷同。不同的地方在于使用本函式开启资料库时,程式会先寻找是否曾经执行过本函式,若执行过则传回先前执行的 ID。另一个不同的地方是本函式无法使用 mysql_close() 关闭资料库。
--------------------------------------------------------------------------------
函式:mysql_query()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_query
送出一个 query 字串。
语法: int mysql_query(string query, int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式送出 query 字串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程式会自动寻找最近开启的 ID。当 query 查询字串是 UPDATE、INSERT 及 DELETE 时,传回的可能是 true 或者 false;查询的字串是 SELECT 则传回新的 ID 值。joey@samaritan.com (09-Feb-1999) 指出,当传回 false 时,并不是执行成功但无传回值,而是查询的字串有错误。
参考
mysql_db_query() mysql_select_db() mysql_connect()
--------------------------------------------------------------------------------
函式:mysql_result()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_result
取得查询 (query) 的结果。
语法: int mysql_result(int result, int row, mixed field);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式取得一格 query 的结果。参数 field 可以是栏位名称、顺序或者是 FieldName.TableName 的格式。在传回资料量少时,可以使用本函式来处理。当资料库大时,本函式的效率就有待考量了,这时可以使用较有效率的 mysql_fetch_row()、mysql_fetch_array() 及 mysql_fetch_object() 等函式。
--------------------------------------------------------------------------------
函式:mysql_select_db()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_select_db
选择一个资料库。
语法: int mysql_select_db(string database_name, int [link_identifier]);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式选择 MySQL 伺服器中的资料库以供之后的资料查询作业 (query) 处理。成功传回 true,失败则传回 false。
参考
mysql_connect() mysql_pconnect() mysql_query()
--------------------------------------------------------------------------------
函式:mysql_tablename()
--------------------------------------------------------------------------------
MySQL 资料库函式库
mysql_tablename
取得资料表名称。
语法: string mysql_tablename(int result, int i);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式可取得资料表名称字串,一般配合 mysql_list_tables() 函式使用,取得该函传回的数字的名称字串。
使用范例
mysql_connect ("localhost:3306");
$result = mysql_list_tables ("wisconsin");
$i = 0;
while ($i < mysql_num_rows ($result)) {
$tb_names[$i] = mysql_tablename ($result, $i);
echo $tb_names[$i] . "
";
$i++;
}
?>