山东大学计算机科学与技术学院

27
1 网 网 网 网 网 网 网 网 网 网 网 网 网 网 Website design and Website design and developments developments

description

山东大学计算机科学与技术学院. 网 站 设 计 与 建 设 Website design and developments. 第三部分 网站设计技术. 第 23 章 PHP 与 MySQL 数据库. 概 述. MySQL 数据库的连结与关闭 新建与删除数据库 记录操作 字段操作. 1. 在 PHP 中访问 MYSQL 数据库的一般步骤. 建立到 MYSQL 数据库服务器的连接。 选择要访问的数据库。 执行 SQL 语句 存储查询结果 显示结果数据。 关闭到 MYSQL 数据库服务器的连接。. 2. MySQL 关系数据库的连结与关闭. - PowerPoint PPT Presentation

Transcript of 山东大学计算机科学与技术学院

Page 1: 山东大学计算机科学与技术学院

11

网 站 设 计 与 建 设网 站 设 计 与 建 设Website design and developmentsWebsite design and developments

Page 2: 山东大学计算机科学与技术学院

22

第第 2323 章 章 PHPPHP 与与 MySQLMySQL 数数据库据库

第三部分 网站设计技术第三部分 网站设计技术

Page 3: 山东大学计算机科学与技术学院

33

MySQLMySQL 数据库的连结与关闭数据库的连结与关闭 新建与删除数据库新建与删除数据库 记录操作记录操作 字段操作字段操作

概 述概 述

Page 4: 山东大学计算机科学与技术学院

1. 1. 在在 PHPPHP 中访问中访问 MYSQLMYSQL 数据库的一数据库的一般步骤般步骤 建立到建立到 MYSQLMYSQL 数据库服务器的连接。数据库服务器的连接。 选择要访问的数据库。选择要访问的数据库。 执行执行 SQLSQL 语句语句 存储查询结果 存储查询结果 显示结果数据。显示结果数据。 关闭到关闭到 MYSQLMYSQL 数据库服务器的连接。数据库服务器的连接。

Page 5: 山东大学计算机科学与技术学院

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( 连接句柄连接句柄 ););

Page 6: 山东大学计算机科学与技术学院

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);

?>

Page 7: 山东大学计算机科学与技术学院

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( 数据库名,连接句数据库名,连接句柄柄 ););

Page 8: 山东大学计算机科学与技术学院

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);

?>

Page 9: 山东大学计算机科学与技术学院

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( 查询语句查询语句 ,, 连接句柄连接句柄 ););

Page 10: 山东大学计算机科学与技术学院

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 代码

Page 11: 山东大学计算机科学与技术学院

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 代码

Page 12: 山东大学计算机科学与技术学院

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);

?>

Page 13: 山东大学计算机科学与技术学院

5.5. 存储存储并显示查询结果并显示查询结果

数组存储格式:数组存储格式: array mysql_fetch_array(array mysql_fetch_array( 结果集结果集 ,, 结果类结果类

型型 ););

类存储格式:类存储格式: object mysql_fetch_object(object mysql_fetch_object( 结果集结果集 ,, 结果结果类型类型 ););

Page 14: 山东大学计算机科学与技术学院

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 程序

Page 15: 山东大学计算机科学与技术学院

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);

?>

Page 16: 山东大学计算机科学与技术学院

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);

Page 17: 山东大学计算机科学与技术学院

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 将查询到的记录条数和指定字段数据显示在网页中

Page 18: 山东大学计算机科学与技术学院

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 程序

Page 19: 山东大学计算机科学与技术学院

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>";

}

?>

Page 20: 山东大学计算机科学与技术学院

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 ()函数代码

Page 21: 山东大学计算机科学与技术学院

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. 记录操作命令记录操作命令

Page 22: 山东大学计算机科学与技术学院

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() 获取指定字段所有信息

Page 23: 山东大学计算机科学与技术学院

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. 字段操作命令字段操作命令

Page 24: 山东大学计算机科学与技术学院

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. 字段操作命令字段操作命令

Page 25: 山东大学计算机科学与技术学院

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() 函数的代码

Page 26: 山东大学计算机科学与技术学院

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 将查询结果集中所含字段的数量和字段的相关信息显示在网页中

Page 27: 山东大学计算机科学与技术学院

2727

第第 2222 章 思考问题章 思考问题

结 束结 束

在在 PHPPHP 中访问中访问 MYSQLMYSQL 数据库的一般步骤是什么?数据库的一般步骤是什么? 在在 PHPPHP 中对中对 MYSQLMYSQL 数据库的连接有哪两种,使数据库的连接有哪两种,使

用的函数分别是什么?用的函数分别是什么? 在在 PHPPHP 中对中对 MYSQLMYSQL 数据库查询结果的存储的方数据库查询结果的存储的方

式有哪两种?式有哪两种? 在在 PHPPHP 中用来获得指定数据库中所有数据库表的中用来获得指定数据库中所有数据库表的

名称的函数是什么?名称的函数是什么? PHPPHP 对对 MySQLMySQL 数据库的操作完成后,为什么要数据库的操作完成后,为什么要

有关闭“连接”? 有关闭“连接”? 网页的代码哪些在服务器端运行,哪些在客户端网页的代码哪些在服务器端运行,哪些在客户端

运行?运行?