跟燕十八学习PHP-第十九天-热身项目完善

时间:2022-02-11 08:06:58
/** 
燕十八 公益PHP培训 
课堂地址:YY频道88354001 
学习社区:www.zixue.it 
**/


<?php


/*
$sql = 'select * from user';
$rs = mysql_query($sql,$conn);


while($row = mysql_fetch_assoc($rs)) {
    
}


每次想取多行数据,都要如上步骤,来个while循环,能否用函数封装起来?


要求:
函数  getAll()
parm: string $sql
parm: resource $conn


return 二维数组, false
*/


$conn = mysql_connect('localhost','root','111111');
if(!$conn) {
    exit('连接失败');
}


$sql = 'use test';
mysql_query($sql,$conn);




function getAll($sql,$conn) {
    // 思路: 沿着$conn通道 发送$sql查询
    // 再while循环,取出每一行,
    // 装到一个二维数组, 再返回


    $rs = mysql_query($sql,$conn);
    if(!$rs) {
        return false;
    }


    $res = array();
    while($row = mysql_fetch_assoc($rs)) {
        $res[] = $row;
    }


    return $res;
}




echo '<pre>';


$sql = 'select * from stu';


$stus = getAll($sql,$conn);
print_r($stus); // 取多行多列的函数封装






// 再封装一个函数,用来专门取一行的场合.
// sql = select * from stu where id=16;


$sql = 'select * from stu where id=16';
$stu = getAll($sql,$conn);


print_r($stu);  // 也取出了数据,但是呢是二维数组,不方便








/*
getRow 取出单行数据
parm String $sql; sql语句
parm resource $conn; 资源


return 一维数组 array/ false
*/
function getRow($sql,$conn) {
    $rs = mysql_query($sql,$conn);


    return mysql_fetch_assoc($rs);
}




$sql = 'select * from stu where id=16';
$stu = getRow($sql,$conn);


print_r($stu);  // 返回1行数组,一维数组








// 又提要求: 帮我查一共有多少个学生?
$sql = 'select count(*) from stu';
$num = getRow($sql,$conn);
print_r($num); 
/*
返回的是1维数组,因此就返回 count(*)单元
Array
(
    [count(*)] => 3
)


但此处,只是想要数值3,并不想数组形式
*/




/*
getOne 
parm: String $sql sql语句
parm: resource $conn 资源


return 单个标量值
*/
function getOne($sql,$conn) {
    $rs = mysql_query($sql,$conn);
    $row = mysql_fetch_row($rs);


    return $row[0];
}




$sql = 'select count(*) from stu';
$num = getOne($sql,$conn);
print_r($num); 




<?php
/*
日期时间函数,在PHP中,也是非常常用的函数
频率仅将于字符串和数组函数




时间戳: 是指1970-01-01 00:00:00 --> 某个时刻所经历的秒数


问: 你是什么时间出生的?
答: 我是时间戳1204563241时出生的.


问: 时间戳这么不易于人来理解,为什么用时间戳来储存时间呢?
答: 理由如下
    1:便于存储 2038年之前的时间戳,都没超过40亿,因此用4个字符的int型,就可以存储了.
    2:时间戳就是数学上的一个值,没有歧义.
    如果用格式,比如中国人 喜欢2012年01月01日,比如有人喜欢 01/01 2012 13:00:00
    用时间戳没有此争论
    3:时间虽然不便于给人看,但是便于给机器运算,便于比较时间差.


    举例: 某张表中,有字段,存是是发帖时间, 格式是 yyyy-mm-dd hh:ii:ss
    我让你取出24小时内的帖子.


    得先根据当前这一瞬间  2012-03-01 09:13:25, 往前移动24小时,计算出24前的日期 ,记为A
    然后 pubtime >= A, 是2012-02-28还是02-29, 得考虑平年闰年的问题
    很麻烦




    而用时间戳则没有此问题
    只需要得出当前这一瞬间的时间戳,记为Current, 然后 Current - 24 * 3600 ,记为B
    只需要 pubtime >= B 就可以了.






问:时间戳虽利于计算机来计算,但人眼看起来,还是不直观啊?
答:有专门的函数,用来把时间戳格式化你想要的格式,date函数


*/


echo '从1970-01-01 00:00:00到现在,已经过去',time(),'秒了';




echo '<br />';




$time = time();
echo date('m/d Y H:i',$time);




echo '<hr />';
/*
strtotime,则是把字符串形式的时间转化成时间戳
*/


$birth = '1985-05-17';
echo strtotime($birth),'<br />';




// 从当前时间,退回1天的时间戳
echo strtotime('-1 day'),'<br />';


// 退回到一周前的时间戳
echo strtotime('-1 week'),'<br />';






燕十八老师太幽默了, 昨天的视频如下:

http://www.tudou.com/listplay/uCx6IN6luok/NbLhsHyCFCA.html