在PHP函数库中,有数十种专为处理MySQL数据库所开发的函数,详细的说明可在这个位置:http://www.php.net/manual/en/ref.mysql.php查询。在此对一些常用的函数进行简要的说明。
1 连接与查询
功能 | 建立数据库连接 |
函数名称 | Mysql_connect() 或 mysql_pconnect() |
传入参数 | [string SERVER [, string USERNAME [, string PASSWORD [, bool NEW_LINK [, int CLIENT_FLAGS]]]]] |
返回参数 | 建立完成的数据库连接 |
续表
功能 | 建立数据库连接 |
范例 | $link = mysql_connect('localhost', 'root', '123456'); |
说明 | 创建一MySQL服务器连接。若使用 mysql_pconnect() ,则可以创建一个持续性的连接(persistent connection)。 其中所有的参数都可以省略。 当不加任何参数时,SERVER 的默认值为 localhost,USERNAME 的默认值为 PHP 执行程序的拥有者,PASSWORD 则为空字符串。而 SERVER 后方还可以加上冒号与端口号,代表使用哪个端口与 MySQL 连接,如果不特别指定,均使用默认端口3306。 |
功能 | 选用数据库 |
函数名称 | mysql_select_db() |
传入参数 | string DATABASE_NAME [, resource LINK_IDENTIFIER] |
返回参数 | |
范例 | mysql_select_db('db'); |
说明 | 此函数用来选定欲访问的数据库。当 LINK_IDENTIFIER 参数被省略时,默认使用最近一次已建立的 connection;若没有任何已建立的 connection 可供利用,则会自动执行未加参数的 mysql_connect(),试图自行创建新的 connection。 另外,亦可使用mysql_query()函数达到相同效果,如:mysql_query('use db'); |
功能 | 新建数据库 |
函数名称 | mysql_create_db () |
传入参数 | string DATABASE_NAME |
返回参数 | |
范例 | mysql_create_db('db'); |
说明 | 此函数可创建一新数据库,数据库名称为传入参数。 |
功能 | 执行查询 |
函数名称 | mysql_query() |
传入参数 | string QUERY [, resource LINK_IDENTIFIER [, int RESULT_MODE]] |
返回参数 |
续表
功能 | 执行查询 |
范例 | mysql_query('select * from zip'); |
说明 | 本函数用来提交任何标准的SQL查询字符串给MySQL处理。若未指定 LINK_IDENTIFIER参数,则会使用最近一次已建立的connection。 而当所执行的是 SELECT、SHOW、EXPLAIN 或 DESCRIBE 语句时,将返回一个 resource identifier,执行失败时返回FALSE。执行其他SQL语句时,成功返回TRUE,否则返回FALSE。 |
功能 | 释放存储器 |
函数名称 | mysql_free_result () |
传入参数 | resource RESULT |
返回参数 | |
范例 | mysql_free_result($result); |
说明 | 释放 $RESULT 所占用的存储器 |
功能 | 关闭连接 |
函数名称 | Mysql_close () |
传入参数 | [resource LINK_IDENTIFIER] |
返回参数 | |
范例 | Mysql_close ($link); |
说明 | 关闭由mysql_connect()所创建的MySQL服务器连接。 一般而言,当程序结束之后,由 mysql_connect()所建立的连接会自动中断,这个函数是用不着的。但是将数据取出之后,程序还要对它们进行耗时又复杂的运算处理。建议先退出数据库的连接,以减轻MySQL的负担。 |
2 分析、计算与统计
功能 | 计算返回结果中的数据条数 |
函数名称 | mysql_num_rows |
传入参数 | Resource RESULT |
返回参数 | 数据条数 |
范例 | mysql_num_rows ($result); |
功能 | 移动数据记录指针 |
函数名称 | mysql_data_seek () |
传入参数 | esource RESULT_IDENTIFIER, int ROW_NUMBER |
返回参数 | |
范例 | mysql_data_seek($result, 6); |
说明 | 将RESULT_IDENTIFIER的数据记录指针移到第 ROW_NUMBER个 row 去。以范例而言,便是将数据记录指针移动到第六行。 |
功能 | 分析返回内容,并提取单条数据 |
函数名称 | mysql_fetch_row () |
传入参数 | resource RESULT |
返回参数 | 单条数据数组 |
范例 | 数据数组 $num_rows = mysql_num_rows($result); for ( $i=0; $i<$num_rows; $i++ ) { list($value1, $value2) = mysql_fetch_row($result); echo $value1; echo $value2; echo ...... } 用法二: while ( list($value1, $value2) = mysql_fetch_row($result) ) { echo $value1; echo $value2; echo ...... } 用法三: while ( $value = mysql_fetch_row($result) ) { echo $value[0]; echo $value[1]; echo ...... } |
说明 | 搭配循环的使用,这个函数可以从RESULT中将数据以一维数组的方式分行提取出来。 |
功能 | 分析数组内容 |
函数名称 | mysql_fetch_array () |
传入参数 | resource result [, int result_type] |
返回参数 | |
范例 | 用法一:(使用字段编号分析) while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf("ID: %s Name: %s", $row[0], $row[1]); } 用法二:(使用字段名称分析) while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("ID: %s Name: %s", $row["id"], $row["name"]); } 用法三:(同时使用字段编号与名称分析) while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { printf ("ID: %s Name: %s", $row[0], $row["name"]); } |
说明 | 分析每一行$row中的各个字段内容。 可使用三种分析方式,分别为: MYSQL_NUM:使用字段编号分析 MYSQL_ASSOC:使用字段名称分析 MYSQL_BOTH:同时使用字段编号与名称分析 |
功能 | 分析对象内容 |
函数名称 | Mysql_fetch_object () |
传入参数 | resource result [, int result_type] |
返回参数 | |
范例 | $result = mysql_query("select * from mytable"); while ($row = mysql_fetch_object($result)) { echo $row->user_id; echo $row->fullname; } |
说明 | mysql_fetch_object ()类似于mysql_fetch_array () 唯一不同之处在于mysql_fetch_object ()仅能使用字段名称进行分析,不能使用字段编号或使用同时使用字段编号与名称进行分析。 |
功能 | 分析表头内容 |
函数名称 | mysql_fetch_field () |
传入参数 | resource result [, int fieldnum] |
返回参数 | |
范例 | while ($i < mysql_num_fields($result)) { echo "Information for column $i:<br />/n"; $row = mysql_fetch_field($result, $i); if (!$row) { echo "No information available<br />/n"; } echo "<pre> blob: $row->blob max_length: $row->max_length multiple_key: $row->multiple_key name: $row->name not_null: $row->not_null numeric: $row->numeric primary_key: $row->primary_key table: $row->table type: $row->type unique_key: $row->unique_key unsigned: $row->unsigned zerofill: $row->zerofill </pre>"; $i++; } |
说明 | 分析表头字段信息,信息类型共有12种,包括名称、长度、类型等,说明如下: 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则表示此字段为数字类型 blob - 如果是1则表示此字段为 BLOB 类型 type - 这个字段的类型 unsigned -如果是1则表示此字段为unsigned 类型 zerofill -如果是1则表示此字段为zero-filled |
功能 | 检测自动生成的值 |
函数名称 | Mysql_insert_id () |
传入参数 | [resource LINK_IDENTIFIER] |
返回参数 | |
范例 | $ID = mysql_insert_id($link); |
说明 | 假如您将某个字段的类型设为AUTO_INCREMENT,使用本函数将可以得知在 INSERT 语句被执行时,MySQL 自动为该字段创建的值为何。 |
功能 | 检测所影响的数组数量 |
函数名称 | mysql_affected_rows () |
传入参数 | [resource LINK_IDENTIFIER] |
返回参数 | |
范例 | $num_rows = mysql_affected_rows($link); |
说明 | 取得最近一次通过LINK_IDENTIFIER,在 MySQL上执行INSERT、UPDATE或DELETE 所影响的行(row)数。若执行的是不含WHERE的DELETE语句,则会删除全部数据,但本函数的返回值将是0。 由于执行UPDATE时,新值与旧值相同的数据列不会被更新,所以 mysql_affected_rows( )函数的返回值,不一定就是查询条件所符合的数据条数。 |
3 显示系统信息
功能 | 列出系统内所有数据库名称 |
函数名称 | mysql_list_dbs () |
传入参数 | $link |
返回参数 | |
范例 | $db_list = mysql_list_dbs($link); while ($row = mysql_fetch_object($db_list)) { echo $row->Database . "/n"; } |
说明 | 显示系统内所有的数据库名称 |
功能 | 列出某一数据库内所有数据表名称 |
函数名称 | Mysql_list_tables () |
传入参数 | $dbname |
返回参数 | |
范例 | $result = mysql_list_tables($dbname); |
while ($row = mysql_fetch_row($result)) { echo "Table: $row[0]/n"; } | |
说明 | 列出某一数据库内所有数据表数据 |
功能 | 列出某数据表内所有字段名称 |
函数名称 | Mysql_list_fields () |
传入参数 | $dbname,$tablename,$link |
返回参数 | |
范例 | $fields = mysql_list_fields("database1", "table1", $link); $columns = mysql_num_fields($fields); for ($i = 0; $i < $columns; $i++) { echo mysql_field_name($fields, $i) . "/n"; } |
说明 | 列出某数据表内所有数据字段名称。 在了解如何用PHP连接MySQL,执行SQL指令并使用返回的数据,同时也对PHP所提供的MySQL函数有进一步的了解之后,接下来便是通过范例来增强使用上的熟悉程度,请见下一节:PHP与MySQL操作范例。 |