山东大学计算机科学与技术学院
description
Transcript of 山东大学计算机科学与技术学院
11
网 站 设 计 与 建 设网 站 设 计 与 建 设Website design and developmentsWebsite design and developments
22
第第 2323 章 章 PHPPHP 与与 MySQLMySQL 数数据库据库
第三部分 网站设计技术第三部分 网站设计技术
33
MySQLMySQL 数据库的连结与关闭数据库的连结与关闭 新建与删除数据库新建与删除数据库 记录操作记录操作 字段操作字段操作
概 述概 述
1. 1. 在在 PHPPHP 中访问中访问 MYSQLMYSQL 数据库的一数据库的一般步骤般步骤 建立到建立到 MYSQLMYSQL 数据库服务器的连接。数据库服务器的连接。 选择要访问的数据库。选择要访问的数据库。 执行执行 SQLSQL 语句语句 存储查询结果 存储查询结果 显示结果数据。显示结果数据。 关闭到关闭到 MYSQLMYSQL 数据库服务器的连接。数据库服务器的连接。
2. MySQL2. MySQL 关系数据库的连结与关闭关系数据库的连结与关闭
非永久性连接:非永久性连接: int mysql_connect(string [hostname]int mysql_connect(string [hostname][:port], [:port],
string [username],string string [username],string [password]);[password]);
永久性连接永久性连接 int mysql_int mysql_ppconnect(string [hostname]connect(string [hostname][:port], [:port],
string [username],string string [username],string
[password]);[password]); 非永久性连接关闭非永久性连接关闭 int mysql_close(int mysql_close( 连接句柄连接句柄 ););
2. MySQL2. MySQL 关系数据库的连结与关闭关系数据库的连结与关闭 --实例实例
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_cnd=mysql _connect($Server, $user, $pass);
……
mysql _cl ose($db_cnd);
?>
3.3. 对数据库操作对数据库操作
指定数据库。 指定数据库。 int mysql_select_db(int mysql_select_db( 数据库名,连接句数据库名,连接句
柄柄 ););
新建数据库格式:新建数据库格式:
int mysql_create_db(int mysql_create_db( 数据库名,连接句数据库名,连接句柄柄 ););
删除数据库格式:删除数据库格式:
int mysql_drop_db(int mysql_drop_db( 数据库名,连接句数据库名,连接句柄柄 ););
3.3. 新建及删除数据库新建及删除数据库 (( 实例实例 ))
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_name="phptest";
$db_cnd=mysql _connect($Server, $user, $pass);
$db_create=mysql _create_db($db_name,$db_cnd);
……
$db_close=mysql _drop_db($dbname, $db_cnd);
mysql _cl ose($db_cnd);
?>
4.4. 数据记录查询操作数据记录查询操作
格式格式 11 ::
int mysql_db_query(int mysql_db_query( 数据库名数据库名 ,, 查询语句查询语句 ,, 连连接句柄接句柄 ););
格式格式 22 ::
int mysql_select_db(int mysql_select_db( 数据库名,连接句数据库名,连接句柄柄 ););
int mysql_query(int mysql_query( 查询语句查询语句 ,, 连接句柄连接句柄 ););
4.4. 数据记录查询操作(实例数据记录查询操作(实例 11 ))
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_name="phptest";
$db_cnd=mysql _connect($Server, $user, $pass);
$db_name="l ibrary";
$query="create table mytestTab (id i nt(10),name char(10) )";
$res=mysql _db_query($db_name ,$query,$db_cnd);
……
mysql _cl ose($db_cnd);
?>
图 22.3 用函数 mysql_db_query ()对数据库进行查询 的 PHP 代码
4.4. 数据记录查询操作(实例数据记录查询操作(实例 11 ))
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_name="phptest";
$db_cnd=mysql _connect($Server, $user, $pass);
$db_name="l ibrary";
$query="create table mytestTab (id i nt(10),name char(10) )";
$res=mysql _db_query($db_name ,$query,$db_cnd);
……
mysql _cl ose($db_cnd);
?>
图 22.3 用函数 mysql_db_query ()对数据库进行查询 的 PHP 代码
4.4. 数据记录查询操作(实例数据记录查询操作(实例 22 ))
图 22.4 用用函数 mysql_query ()创建新表的 PHP 代码图 22.4 用用函数 mysql_query ()创建新表的 PHP 代码
<?php
$dbname="phptest";
$db_cnd=mysql _connect("l ocal host", "root", "");
$mysql ="sel ect i d, name f rom mytestTab";
$db_sel=mysql _select_db($dbname,$db_cnd);
$res=mysql _query($mysql , $db_cnd);
……
mysql _cl ose($db_cnd);
?>
5.5. 存储存储并显示查询结果并显示查询结果
数组存储格式:数组存储格式: array mysql_fetch_array(array mysql_fetch_array( 结果集结果集 ,, 结果类结果类
型型 ););
类存储格式:类存储格式: object mysql_fetch_object(object mysql_fetch_object( 结果集结果集 ,, 结果结果类型类型 ););
5.5. 存储查询结果存储查询结果——数组数组实例实例
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_cnd=mysql _connect($Server, $user, $pass);
$db_name="l i brary";
$db_sel =mysql _sel ect_db($db_name);
$query="sel ect * f rom cs_students";
$resul t=mysql _query($query, $db_cnd);
/ / $resul t=mysql _db_query($db_name, $query);
whi l e ($row=mysql _fetch_array($resul t))
{
echo $row["i d"];
echo " ";
echo $row["cs_name"];
$bl ank=strl en($row["cs_name"])==4?" ": " ";
echo $bl ank;
echo $row["sex"];
echo "<br>";
}
mysql _f ree_resul t($resul t);
mysql _cl ose($db_cnd);
?>
图 22.5 用函数 mysql_fetch_array ()将查询结果存为数组的 PHP 程序
5.5. 存储查询结果存储查询结果——对象实例对象实例
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_cnd=mysql _connect($Server, $user, $pass);
$db_name="l i brary";
$db_sel =mysql _sel ect_db($db_name);
$query="sel ect * f rom cs_students";
$resul t=mysql _query($query,$db_cnd);
/ / $resul t=mysql _db_query($db_name, $query);
whi l e ($row=mysql _fetch_obj ect($resul t))
{
echo $row->i d;
echo " ";
echo $row->cs_name;
$bl ank=strl en($row->cs_name)==4?" ": " ";
echo $bl ank;
echo $row->sex;
echo "<br>";
}
mysql _f ree_resul t($resul t);
mysql _cl ose($db_cnd);
?>
5.5. 存储查询结果存储查询结果
•对查询结果的当前记录进行存储对查询结果的当前记录进行存储array mysql_fetch_row(int array mysql_fetch_row(int 结果结果 ););
•对查询结果中的某个具体的数据进行存储,对查询结果中的某个具体的数据进行存储,int mysql_result(int int mysql_result(int 结果结果 ,int ,int 记录序号记录序号 , , mixed mixed 字段字段 ););
•对查询所获取的结果的总数量进行统计对查询所获取的结果的总数量进行统计array mysql_num_rows (int array mysql_num_rows (int 结果结果 ););
•释放查询结果所占用的内存 释放查询结果所占用的内存 boolean mysql_free_result(int boolean mysql_free_result(int result);result);
5.5. 存储查询结果存储查询结果
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_cnd=mysql _connect($Server, $user, $pass);
$db_name="l i brary";
$db_sel =mysql _sel ect_db($db_name);
$query="sel ect * f rom cs_students";
$resul t=mysql _query($query, $db_cnd);
/ / $resul t=mysql _db_query($db_name, $query);
echo "记录条数为:". mysql _num_rows($resul t) . "<br>";
$my_fi el d=mysql _resul t($resul t, 2, cs_name);
echo "第三条记录的姓名字段为: ". $my_fi el d. "<br>";
mysql _f ree_resul t($resul t);
mysql _cl ose($db_cnd);
?>
图 22.8 获取记录条数和指定字段数据的 PHP 程序
图 22.9 将查询到的记录条数和指定字段数据显示在网页中
6.6. 获取获取 sqlsql 错误信息:错误信息:错误代码、错误信息错误代码、错误信息
<?php
$Server="l ocal host";
$user="root";
$pass="your_password";
$db_cnd=mysql _connect($Server, $user, $pass);
i f (mysql _error())
{
echo mysql _errno(). ": ". mysql _error();
echo "<br>";
}
$db_name="l i brary";
$db_sel =mysql _sel ect_db($db_name);
i f (mysql _error())
{
echo mysql _errno(). ": ". mysql _error();
echo "<br>";
}
$query="sel ect * f rom cs_students";
$resul t=mysql _query($query, $db_cnd);
i f (mysql _error())
{
echo mysql _errno(). ": ". mysql _error();
echo "<br>";
}
?>
图 22.10 加入了获取错误信息的操作的 PHP 程序
1919
int mysql_list_dbs(int mysql_list_dbs( 连接句柄连接句柄 ); ); 返回指定连接中的所有能用的数据库名称返回指定连接中的所有能用的数据库名称
7.7. 数据库操作命令数据库操作命令
<?php
$link = mysql_connect('localhost', 'root', '');
$db_list = mysql_list_dbs($link);
while ($row = mysql_fetch_object($db_list))
{
echo $row->Database;
echo "<br>";
}
?>
2020
int mysql_list_tables(int mysql_list_tables( 数据库数据库 ,,连接句柄连接句柄 ););
int mysql_tablename(listint mysql_tablename(list集集 ,list,list 序号序号 ););
8.8. 表操作命令表操作命令
<?php
$link = mysql_connect('localhost', 'root', '');
$result = mysql_list_tables('test');
echo mysql_tablename($result,0)
?>
图 22.13 调用 mysql_tablename ()函数代码
2121
int mysql_insert_id(int mysql_insert_id( 连接句柄连接句柄 );); int mysql_affected_rows(int mysql_affected_rows( 连接句连接句
柄柄 );); int mysql_data_seek(int mysql_data_seek( 结果集结果集 ,, 记录记录
序号序号 ); );
9.9. 记录操作命令记录操作命令
2222
获取指定字段所有信息获取指定字段所有信息 object mysql_fetch_field(object mysql_fetch_field( 结果集结果集 ,, 字段字段
序号序号 ); );
10.10. 字段操作命令字段操作命令
<?php
…
$resul t=mysql _db_query($db_name, $query);
$fi el d=mysql _fetch_fi el d($resul t, 1)
echo $fi el d->name;
echo $fi el d->max_l ength;
…
?>
图 22.14 用函数 mysql_fetch_field() 获取指定字段所有信息
2323
获取指定字段特征信息获取指定字段特征信息 string mysql_field_flags(string mysql_field_flags( 结果集结果集 ,, 字段字段
序号序号 );); 获取指定字段的字段名获取指定字段的字段名 string mysql_field_name(string mysql_field_name( 结果集结果集 ,, 字段查字段查
询序号询序号 );); 获取指定字段的获取指定字段的““表表””的名称的名称 int mysql_field_table(int mysql_field_table( 结果集,字段序结果集,字段序
号号 ););
10.10. 字段操作命令字段操作命令
2424
获取指定字段的字段类型获取指定字段的字段类型 string mysql_field_type(string mysql_field_type( 结果集结果集 ,, 字段序字段序
号号 ); ); 获取指定字段的字段长度获取指定字段的字段长度 int mysql_field_len(int mysql_field_len( 结果集结果集 ,, 字段序号字段序号 );); 获取最后一次获取最后一次 fetchfetch 的各个字段的最大长度的各个字段的最大长度 array mysql_fetch_lengths(array mysql_fetch_lengths( 结果集结果集 ););
10.10. 字段操作命令字段操作命令
2525
获取指定数据库指定表的所有字段信息获取指定数据库指定表的所有字段信息 int mysql_list_fields(int mysql_list_fields( 数据库数据库 ,, 表表 ,, 连接连接
句柄句柄 );); 获取查询结果集中所含字段的数量获取查询结果集中所含字段的数量 int mysql_num_fields(int mysql_num_fields( 结果集结果集 ););
10.10. 字段操作命令字段操作命令
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$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";
}
?>
图 22.15 调用 mysql_list_fields() 函数的代码
2626
10.10. 字段操作命令字段操作命令
<?php ……
$query="select * from cs_students";
$result=mysql_query($query,$db_cnd);
//$result=mysql_db_query($db_name,$query);
$field_num=mysql_num_fields($result);
echo "字段数量:".$field_num."<br>";
for($i=0;$i<$field_num;$i++)
{
$field_object=mysql_fetch_field($result,$i);
$field_name=$field_object->name;
$field_name=trim($field_name);
for($j=0;$j<10-strlen($field_name);$j++)
{
$field_name.=" ";
}
echo $field_name;
echo field_object->table;
echo $field_object->max_fieldth;
echo $field_object->not_null;
echo $field_object->primary_key;
}
mysql_free_result($result);
mysql_close($db_cnd);
?>
图 22.16 调用 mysql_list_fields() 函数的代码 图 22.17 将查询结果集中所含字段的数量和字段的相关信息显示在网页中
2727
第第 2222 章 思考问题章 思考问题
结 束结 束
在在 PHPPHP 中访问中访问 MYSQLMYSQL 数据库的一般步骤是什么?数据库的一般步骤是什么? 在在 PHPPHP 中对中对 MYSQLMYSQL 数据库的连接有哪两种,使数据库的连接有哪两种,使
用的函数分别是什么?用的函数分别是什么? 在在 PHPPHP 中对中对 MYSQLMYSQL 数据库查询结果的存储的方数据库查询结果的存储的方
式有哪两种?式有哪两种? 在在 PHPPHP 中用来获得指定数据库中所有数据库表的中用来获得指定数据库中所有数据库表的
名称的函数是什么?名称的函数是什么? PHPPHP 对对 MySQLMySQL 数据库的操作完成后,为什么要数据库的操作完成后,为什么要
有关闭“连接”? 有关闭“连接”? 网页的代码哪些在服务器端运行,哪些在客户端网页的代码哪些在服务器端运行,哪些在客户端
运行?运行?