第十单元 PHP与MySQL综合应用
目标内容:
第29章 PHP与MySQL
第30章 表的结合
第31章 日期时间数据
实例应用:数据库留言簿
第29章 PHP与MySQL
29.1 PHP与MySQL连接的流程
1)用户浏览器向网页服务器下达命令
2)服务器收到请求并寻找指定网页
3)服务器执行网页内容含的PHP代码
4)PHP代码通过内置Mysql API访问后台数据库服务器
5)取加后台数据库查询结果并返回给用户
PHP与数据库MySQL连接方法:
1.连接函数
mysql_connect()
2.建立数据库
mysql_create_db()
3.查询
1)mysql_db_query() 2)mysql_query()
eg:
$select=mysql_select_db('test');
$sql="select * from customers";
$result=mysql_query($sql)|| die("query fail");
4.错误处理
if ($result=mysql_query("sql")){
echo "显示正确信息";
}else{
echo "Error:".mysql_errno().";错误信息:".mysql_error();
}
29.2 PHP与Mysql连接函数
一、连接类函数
1.mysql_close() 关闭数据库
int mysql_close([int link_identifier])
2.mysql_connect 连接数据库
int mysql_connect([string hostname[:port][:/pathto/socket] [,string username[,string password]]]])
eg:
3.mysql_pconnect()持续连接、
4.mysql_select_db 选择数据库
int mysql_select_db(string database_name[,int link_identifier])
成功返回True,失败返回false
eg: $link=mysql_connect();
mysql_select_db("test",$link);
5.mysql_change_user 更改连接用户
二、建立或删除数据库类函数
1.mysql_create_db 增加一个数据库
成功返回True,失败返回false
eg:
2.mysql_drop_db 删除数据库
三、查询类
1.mysql_query 送出Mysql查询
eg:
2.mysql_db_query与上区别见P308
四、处理查询结果
1.mysql_fetch_array 取得查询结果,存入数组中
array mysql_fetch_array(int result[, int result_type])
result_type: 1)mysql_num 2)mysql_assoc 3)mysql_both
eg:
$row=mysql_fetch_array($result);
echo $row['name'];
2.mysql_data_seek 移动内部指针
3.mysql_field_seek 设置指针的偏移量
4.mysql_affected_rows 取得先前操作Mysql时,受影响的行的数目
返回上一个操作真正影响的数据行数(row)
5.mysql_free_result 释放查询后的内存
6.mysql_num_fields 取得字段的数目
7.mysql_num_rows 取得结果中行的数目
8.mysql_field_flags 取得指定定做的标志
9.mysql_fetch_field 取得字段信息
eg: p315
10.mysql_fetch_object取得查询后的对象结果
返回一个对象,相当于取得的行
while($row=mysql_fetch_object($result)){
echo $row->user_id;
echo $row->fullname;
}
11.mysql_fetch_row 取得单行结果
12.mysql_field_name 取得字段的名称
13.mysql_inser_id 取得之前insert操作的id
14.mysql_fetch_lengths 取得各字段的最大长度
15.mysql_list_fields 列出字段
16.mysql_field_type 取得指定字段的数据类型
五、错误处理类
1.mysql_errno
2.mysql_error
六、数据库信息类
1.mysql_tablename 取得表名称
2.mysql_list_tables 列出数据库中的表
3.mysql_list_dbs 列出Mysql服务器上可用的数据库
4.mysql_field_table 取得指定字段所在的表名称
5.mysql_field_len 取得指定字段的长度
第30章程表的结合
30.1 Join 与where
eg: select first_name,order_id from customers as c,orders as O where c.id=O.id;
select first_name,order_id from customers as c inner join orders as O on c.id=O.id;
30.2 各类JOIN
1.笛卡尔结合
旧式where语法:select * from customers as c,orders as O;
新式Join 语法:select * from customers as c cross join order as O;
2.Left join
select * from customers as c LEFT JOIN orders as O ON C.id=O.id;
3.Right Join
select * from customers as c RIGHT JOIN orders as O ON C.id=O.id;
4.Natural left join
上述第二种left join也可改为:
select * from customers as c Natural LEFT JOIN orders as O;
第31章 日期时间数据
31.1日期相关数据
1.datetime字段
2.date字段
3.time字段
4.year字段
5.timestamp字段
31.2数据类型之间的转换
31.3 Mysql内置日期函数
1.dayofweek(date) 返回日期的星期索引
2.weekday(date) 同上
3.yofmonth(date)返回date中日期部分
4.dayofyear(date)返回一年中的日数
5.Month(date)返回日期中的月份
6.dayName(date) 返回星期
7.monthname(date)返回月份
8.quarter(date) 返回季
9.week(date)或week(date,First)
10.Year(date)返回年份
11.hour(time)
12.minute(time)
13.period_add(P,N)增加N个月到阶段P
14.period_diff(p1,p2)返回时期P1~P2之间的月数
15. date_add(date,intervar expr type)
16.To_days(date) 返回从公元0年起的天数
17.From_days(N)
18.date_format(date,format)格式化
19.time_format(time,format)
20.curdate()或current_date
21.curtime() current_time
22.Now()
23.Unix_timestamp()
24.from_unixtime
25.from_unixtime(unix_timestamp,format)
26.sec_to_time(seconds)
27.time_to_sec(time)
实践与操作:
1创建一个数据库留言簿
2.建立一个PHP日历