韦德国际_韦德国际1946官方网站_韦德国际1946手机版
做最好的网站

高等课程笔记,PHP高端笔记汇总

日期:2019-06-19编辑作者:韦德国际1946官方网站

高等篇少校涉及数据库的利用以及Cookie和Session会话,升高PHP的开销功用和周转功效

一、PHP日期

例一:

 

PHP的date()函数用于格式化时间或日期。
PHP Date()函数可把时光戳格式化为可读性越来越好的日子和时间。
语法:date(format,timestamp)
format:必需。规定时间戳的格式。
timestamp:可选。规定时期戳。默许是时下的日期和时间。

复制代码 代码如下:

PHP技术员必要调控的MySQL操作

时刻戳是自壹玖陆柒年13月1日(00:00:00 金霉素T)以来的秒数。它也被喻为 Unix 时间戳(Unix Timestamp)。

<?php
// 类的概念
class User
{
// 属性,注意public、private、protected的功能范围
public $name = "hackbaby";
// 构造函数
function __construct()
{
echo "construct<br />";
}
// 方法
function say()
{
echo "那是在类的本身调用:$this->name";
}
// 析构函数
function __destruct()
{
echo "destruct";
}
// 再次来到当前指标的讲述新闻 通超过实际例化的变量名调用举个例子本例中的$user
function __toString()
{
return "user class";
}
}
//实例化,假使构造函数有参数则用$user = new User('参数');
$user = new User();
echo $user->name . "<hr />";
$user->say();
echo "<hr />";
echo $user;
?>

  • 为项目设计表
  • 使用SQL语句
  • MySQL的目录结构
    • data目录中存放的是库文件
    • bin目录中存放的是MySQL管理命令
    • *.ini文件记录的是MySQL的布局

格式化时间
date() 函数的首先个参数规定了什么样格式化日期/时间。它采纳假名来代表日期和岁月的格式。这里列出了一些可用的假名:
d - 月首的天 (01-31)
m - 当前月,以数字计 (01-12)
Y - 当前的年(三个人数)

例二:

连接MySQL DB:

能够在字母之间插入其余字符,例如 "/"、"." 或许"-",那样就可以追加附加格式了:

复制代码 代码如下:

  • mysql -h sql地址 -u 用户名 -p密码,如mysql -h localhost -u root -p123456
  • 安然的点子:先输入“mysql -h sql地址 -u 用户名 -p”,回车,再输入密码
<?php
echo date("Y/m/d");
echo "<br />";
echo date("Y.m.d");
echo "<br />";
echo date("Y-m-d");
?>

<?php
class Fruit
{
protected $fruit_color;
protected $fruit_size;

 数据定义语言(DDL)

以上代码的出口相近那样:
2006/07/11
2006.07.11
2006-07-11

function setcolor($color)
{
$this->fruit_color = $color;
}

  • 概念:用来创设数据库中的各样对象-----表、视图、索引、同义词、聚簇等
  • SQL语句

    • 开创数据库
    • CREATE DATABASE [IF NO EXISTS] DatabaseName

    • 创建表

    CREATE TABLE [IF NOT EXISTS] TableName ( colname1 type [property] [index], colname2 type [property] [index], ... )[tableType] [tableCharSet];

  • 修改表

    • alter table 操作
  • 高等课程笔记,PHP高端笔记汇总。数据类型
    • 数值型
      • UNSIGNED:钦赐为无符号存款和储蓄
      • 整型
        • TINYINT 1 Byte (-128,127) (0,255) 小卡尺头值 
          SMALLINT 2 Byte (-32 768,32 767) (0,65 535) 大整数值 
          MEDIUMINT 3 Byte (-8 388 608,8 388 607) (0,16 777 215) 大整数值 
          INT或INTEGE途锐 4 Byte (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 
          BIGINT 8 Byte (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 相当的大整数值 
      • 浮点型
        • FLOAT 4 字节 (-3.402 823 466 E 38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E 38) 0,(1.175 494 351 E-38,3.402 823 466 E 38) 
        • DOUBLE 8 字节 (1.797 693 134 862 315 7 E 308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E 308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E 308)
    • 字符型
      • CHA奥迪Q3 0-255Byte 定长字符串,
        VA中华VCHAENCORE 0-255Byte 变长字符串,必须钦命长度
        TINYBLOB 0-255Byte 不超越 255 个字符的二进制字符串 
        TINYTEXT 0-255Byte 短文本字符串 
        BLOB 0-65 535Byte 二进制格局的长文本数据 
        TEXT 0-65 535Byte 长文本数据 
        MEDIUMBLOB 0-16 777 215Byte 二进制情势的高级中学级长度文本数据 
        MEDIUMTEXT 0-16 777 215Byte 中级长度文本数据 
        LOGNGBLOB 0-4 294 967 295Byte 二进制格局的巨大文本数据 
        LONGTEXT 0-4 294 967 295Byte 高大文本数据
      • CHA汉兰达的管理速度异常的快,VALacrosseCHA本田CR-V具备可变大小
      • 二进制保存首要用于保存非文本文件
      • ENUM,枚举类型,最多能存款和储蓄655叁拾四个值,八个字段只可以存三个值
      • SET,群集类型,最多可存款和储蓄65个值,两个值段可存八个值
    • 日期型
      • DATE 3Byte 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 
        TIME 3Byte '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间 
        YEAR 1Byte 1901/2155 YYYY 年份值 
        DATETIME 8Byte 一千-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和岁月值 
        TIMESTAMP 8Byte 1966-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和岁月值,时间戳

丰裕时刻戳
date() 函数的第三个参数规定了三个时刻戳。此参数是可选的。假使您未有提供时间戳,当前的小时将被应用。

function getcolor()
{
return $this->fruit_color;
}

※任何数据类型以字符串的样式存入,都得以活动转变类型

mktime()函数可为钦赐的日子重回 Unix 时间戳。
语法:mktime(hour,minute,second,month,day,year,is_dst)

function setsize($size)
{
$this->fruit_size = $size;
}

※将时间保存为php时间戳,方便运算

如需取得某一天的时刻戳,我们只要设置 mktime() 函数的 day 参数就能够了:

function getsize()
{
return $this->fruit_size;
}

数量字段属性

<?php
$tomorrow = mktime(0,0,0,date("m"),date("d") 1,date("Y"));
echo "明天是 ".date("Y/m/d", $tomorrow);
?>

function save()
{
//代码
}
}
class apple extends Fruit
{
private $variety;

  • unsigned:设置该字段为无符号数值,只好是数值型
  • zerofill:设置该字段的记录的值未实现钦命位数时,用“0”填充,只好是数值型
  • auto_increment:设置该字段的值自动拉长,也可设定自定义值,须求相同的时候设定索引或主键,只好是数值型
  • null和not null:设置该字段是还是不是同意为空,提出设定为非空,合作default使用
  • default:设置该字段的暗许值,若不输入,使用默许值

以上代码的输出临近那样:
明天是 2006/07/12

function setvariety($type)
{
$this->variety = $type;
}

索引

二、PHP Include文件

function getvariety()
{
return $this->variety;
}
}
$apple = new apple();
echo $apple->setvariety('红富士');
echo $apple->getvariety();
echo "<br />";
echo $apple->setcolor('red');
echo $apple->getcolor();
echo "<br />";
echo $apple->setsize('特大');
echo $apple->getsize();

  • 优点:
    • 拉长查询速度
  • 缺点:
    • 始建和保险开支比较高
    • 攻克财富
  • 主键索引(primary key):索引值必须唯一,每张表唯有三个
  • 唯一索引(unique):索引值必须唯一,但一张表能够有八个
  • 常规索引(index):最宗旨的目录,未有太多的界定
  • 全文索引(filltext):只可以在MyISAM上应用,表越大,效果越好,但速度异常的慢
  • 创建和采用,可查阅MySQL索引类型一览表 让MySQL高效运维起来

劳动器端包含 (SSI) 用于创设可在三个页面重复使用的函数、页眉、页脚或因素。
include和require语句

?>

数据表类型及仓库储存地方

在PHP中,您能够在服务器推行PHP文件从前把该公文插入另一个PHP文件中。

  • MySQL能够本着不相同的蕴藏引擎要求能够选拔最优的积累引擎
  • 多少表类型即存款和储蓄引擎
  • 使用type或engine关键字点名表类型
  • 常用的表类型
    • MyISAM
      • 重申便捷读取操作
      • 对部分作用不协理(事务)
    • InnoDB
      • 支撑部分MyISAM不援救的效应
      • 不补助全文索引
        • 并吞空间相当的大
          功能 MyISAM InnoDB
          事务处理 不支持 支持
          数据行锁定 不支持 支持
          外键约束 不支持 支持
          表空间占用 相对较小 较大
          全文索引 支持 不支持

include和require 语句用于在实行流中向其余文件插入有用的的代码。

MySQL暗中认可字符集

include和require的差异:
require 会发生致命错误 (E_COMPILE_EHavalRO奥迪Q5),并甘休脚本
include 只会生出警告 (E_WA凯雷德NING),脚本将继续

  • 推荐utf8
  • 字符集:用来定义MySQL存款和储蓄字符串的措施
    • 使用character set关键字钦命字符集
  • 核对规则:对规则定义了比较字符串的法子
    • 行使collate钦定查对规则

于是,假诺你希望继续执行,并向用户输出结果,就算富含文件已遗失,那么请使用 include。不然,在框架、CMS 可能复杂的 PHP 应用程序编制程序中,请始终使用 require 向推行流引用关键文件。那促进增进应用程序的安全性和完整性,在某些关键文件意外遗失的状态下。

数据操作语言(DML)

富含文件省去了大气的干活。那象征你可感到有着页面创造标准页头、页脚可能菜单文件。然后,在页头要求创新时,您只需革新这几个页头包涵文件就能够。
语法

  • 要害有三种情势:
    • 1) 插入:INSERT
      • insert into tablename[(字段列表)] values(值列表1)[,(值列表2)...]
        • 表名后边,若有字段列表,则值列表与字段列表一一对应,若未有字段列表,则值列表与表中的字段一一对应
    • 2) 更新:UPDATE
      • update tablename set 字段名='值' [条件]

include 'filename';
或者
require 'filename';

PHP include和require语句
基本功实例
假如你有二个正经的页头文件,名称叫"header.php"。如需在页面中援引那些页头文件,请使用 include/require:

    • 3) 删除:DELETE
      • delete from tablename [条件]
    • 能够运用运算符,包含算术运算符、逻辑运算符、比较运算符、位运算符
<html>
<body>

<?php include 'header.php'; ?>
<h1>Welcome to my home page!</h1>
<p>Some text.</p>

</body>
</html>

数据查询语言(DQL)

 

  • 骨干组织是由SELECT[ALL|DISTINCT]子句,FROM子句,WHERE
    • 子句组成的查询块:
      • SELECT <字段列表>
      • FROM <表或视图名>
      • [WHERE<查询条件>/GROUP BY/OOdysseyDEPAJERO BY]
    • DISTINCT表示不展现重复的记录
    • 动用as关键字,可为字段名起外号,用于或许产生歧义的字段名

例子2
一经大家有叁个在有着页面中选拔的正规化菜单文件:
"menu.php":

数码调控语言(DCL)

echo '<a href="/default.php">Home</a>
<a href="/tutorials.php">Tutorials</a>
<a href="/references.php">References</a>
<a href="/examples.php">Examples</a>
<a href="/about.php">About Us</a>
<a href="/contact.php">Contact Us</a>';
  • 概念:用来予以或回收访问数据库的某种特权,并调节数据库操纵事务爆发的时光及职能,对数据库进行监视等。

网址中的全部页面均应引用该菜单文件。那是现实性的做法:

MySQL内置函数

<html>
<body>

<div class="leftmenu">
<?php include 'menu.php'; ?>
</div>

<h1>Welcome to my home page.</h1>
<p>Some text.</p>

</body>
</html>
  • 岗位:select语句,及子句where order by having 中,update delete语句及子句
  • 函数中得以将字段名当作变量来用,变量的值就是该列对应的全数值
  • 常用

    • 字符串函数

      • concat:把传播的参数连接成三个字符串
      • insert(str,x,y,insert):从str的x地方开首,替换y长度的字符串为insert
      • lower(str),upper(str):将字符串转变为大写,小写
      • left(str,x) right(str,x) 返回str左边(右边)x个字符,x为null则返回null
      • lpad(str,n,pad) rpad(str,n,pad)  用pad对字符串str从最左侧(左侧)进行填充,直到总市长度n
      • trim(str),ltrim(str),rtrim(str)去掉两边,右边,右侧空格
      • replace(str,a,b) 在字符串str中用字符串b替换全体的字符串a
      • strcmp(s1,s2):假如S1比S2小,重回-1;就算S1比S2大则赶回1;假如相等则再次来到0(相比的是ASCII码)

      • substring(str,x,y) 重回字符串str中从地方x起,长度为y的子字符串

    • 数值函数

      • abs(x):重临绝对值
      • ceil(x):重返大于x的细微整数
      • floor(x):重返小于x的最大整数
      • mod(x,y):返回x与y的模
      • rand():重回0-1里面的妄动数
      • round(x,y):重回参数x的y位小数的四舍五入结果
      • truncate(x,y):再次来到数字x截断为y位小数的结果
    • 日子函数
      • curdate():再次回到当前年月日
      • curtime():再次回到当前时分秒
      • now():再次回到当后天子
      • unix_timestamp(time):返回unix时间戳
      • from_unixtime():将Unix时间戳调换为日期
      • week():再次回到时间戳的周
      • year():再次回到时间戳的年
      • hour():重回时间戳的小时
      • minute():重返时间戳的分钟
      • month():重返时间戳的月
      • date_format(time,"%Y-%m-%d %H:%i:%s"):格式化重回时间
    • 流程序调整制函数
      • if(value,t,f):如果value值为true,返回t,如果value值为false,返回f
      • ifnull(value1,value2):如果value1为空,则返回value2,如果value1不为空,返回value1
      • case 
                when value1 then value2
                when value3 then value4
                ......
                else fault END 
        • 当value1为true,再次回到value2,当value3位true,再次来到value4,就那样推算,不然重临fault
        • 别的用法:mysql 语句case when
    • 别的函数
      • database():重返数据库名
      • version():返回MySQL版本
      • user():返回MySQL的用户
      • inet_aton(ip):将IP转换为网路字节序
      • inet_nton():将网络字节序转为IP
      • password():MySQL用户密码加密
      • md5(str):将字符串加密

 

PHP操作数据库

例子 3
假诺大家有三个定义变量的蕴藏文件 ("vars.php"):

  • 连天数据库
    • mysql_connect(IP,user,psw):IP为数据库地址,user为用户名,psw为用户密码,连接成功,重临数据库资源,连接失利,重临false
  • 选择库
    • mysql_select_db($dbname,[$res]):$dbname为库名称;$res为总是数据库是再次来到的财富,若不增多该参数,则默以为近年来开创的数据库财富
  • SQL语句输入
    • mysql_query():施行SQL语句,若语句有再次来到结果集,则函数试行成功重返结果集,若语句未有重返结果集,函数实行成功再次来到true
  • 缓和错误
    • mysql_errno():再次回到错误号
    • mysql_error():重返错误消息
  • 关闭数据库财富
    • mysql_close():关闭数据库能源,不选择参数,暗许关闭开启的财富(推荐)
  • 函数
    • mysql_insert_id():再次回到机关增加的id,若未有设置AUTO_INCREMENT,则返回false
    • mysql_affected_rows():获取受影响的行数
  • 从结果聚集抽出数据
    • mysql_fetch_row($result):从结果聚集取得一条数据,重临索引数组
    • mysql_fetch_assoc($result):从结果集中获得一条数据,再次来到关联数组
    • mysql_fetch_array($result):从结果聚集获得一条数据,重回索引数组和关全面组
    • mysql_fetch_object($result):从结果聚集取得一条数据,再次回到对象
    • mysql_data_seek($result,$row):将指针移动到钦定地点
  • 从结果聚集获取字段
    • mysql_num_rows($result):获取结果集的字段数
    • mysql_num_田野同志s($result):获取结果集的列数
    • mysql_field_name($result):获取结果集的字段名
<?php
$color='red';
$car='BMW';
?>

mysqli操作数据库

这几个变量可用在调用文件中:

  • PHP5以往的新扩充长的职能都以面向对象的,所以mysqli是以指标的样式丰盛的
  • mysqli优点
    • 意味着立异
    • 意义扩充
    • 频率大大增添
    • 更稳定
  • mysqli扩张提供的多少个类
    • mysqli:和一而再有关的类
      • 构造方法
        • mysqli([$host [, $username [, $passd[, $dbname [,$port [, $socket ]]]]]] )
        • 再而60%功再次来到对象,失利再次回到false
      • 翻看连接失利新闻
        • connect_errno():重返连接错误号码
        • connect_error():重返连接错误信息
      • SQL语句输入
        • query(sql):施行SQL语句,若语句有再次回到结果集,则函数实行成功重临结果集对象mysqli_result,若语句未有重返结果集,函数实践成功重返true
      • 方法
        • affected-rows():再次回到影响行数
        • errno():重临错误号
        • error():重返错误音信
        • insert_id():重回机关拉长的id
      • 关闭财富
        • close():关闭连接
    • mysqli_result:表达对数据库的询问所重回的结果集
      • 属性:
        • $num_rows:结果聚集记录数
        • $field_count:结果集中字段数
        • $current_田野:获取当前列的岗位
      • 方法:
        • 拍卖记录
          • fetch_row():与mysql_fetch_row()一致
          • fetch_assoc():与mysql_fetch_assoc()一致
          • fetch_array():与mysql_fetch_array()一致
          • fetch_object():与mysql_fetch_object()一致
          • data_seek():与mysql_data_seek()一致
          • free():释放结果集
        • 处理字段
          • fetch_田野先生():抽取列消息,并视作目的回来
          • fetch_田野同志s():收取全数列消息,并作为指标回来
          • field_seek():移动字段指针
        • 实施多条SQL语句
          • multi_query(sql1[;sql2]):可试行多条sql语句,语句间用“;”隔绝,若有多少个结实集,则均会被再次回到
          • next_result():返回multi_query()的下贰个结出集
          • more_results():检查是或不是含有下叁个结出集
    • mysqli_stmt:预管理类
      • 优点:
        • mysqli和mysqli_result能一气浑成的成效,mysqil_stmt都能形成
        • 频率相比高,实施多条一样的sql语句,唯有数据分化的话,不用再行传语句,直接传数据就能够
        • 防止sql注入,因为出入的数据只会作为值类使用,不会作为可实践语句
      • 创造对象
        • 创办好mysqli对象后,使用该指标的stmt_init()方法早先化mysqli_stmt对象
      • 预备并发送语句
        • 语句中的参数值要运用占位符“?”取代
          • 使用mysqli_stmt中的prepare($sql)方法将语句发送到服务器盘算
          • 并非创制mysqli_stmt对象,直接动用mysqli中的prepare($sql)计划sql语句,并回到mysqli_stmt对象
      • 给占位符传值(绑定参数)
        • 使用bind_param($type,$var1[,$var2...])绑定参数
          • $type可感到i、d、s、b,分别表示integer、double、string和二进制资源
          • $type中的类型个数要与占位符同样,$var个数也要与占位符个数同样
        • 给变量$var赋值
      • 执行sql语句
        • 尚未结果集重回
          • 使用execute()方法实施插入的参数,重返boolean类型
        • 有结果集重回
          • 使用bind_result($var1[,$var2...])绑定结果集
            • 使用fetch()施行语句,每一回得到一条结果,并传递到bind_result()中的变量
            • 使用store_result()试行语句,将兼具结果二遍性抽取,重返结果集,再用fetch()获取每一条记下
          • result_matedate()再次回到结果集,用于获取字段信息
          • 使用result_free()释放结果集
      • 关门能源
        • 选取close()方法关闭
      • 函数
        • mysqli和mysqli_result帮忙函数,mysqli_stmt基本都帮助
  • 事务管理
    • 建立表
      • 表项目为MyISAM不帮助专门的职业功用,供给树立InnoDB类型的表
    • 关闭自动提交
      • autocommit():参数为0或false时,关闭自动提交
    • 交给业务
      • commit():提交业务(多条施行后的sql语句)
    • 回滚事务
      • rollback():回滚事务(多条已试行的sql语句)
  • 其余方法
    • set_charset($string):设置抽取字符集
<html>
<body>

<h1>Welcome to my home page.</h1>
<?php include 'vars.php';
echo "I have a $color $car"; // I have a red BMW
?>

</body>
</html>

PDO

 

  • 优点:
    • 转移数据库时,不用更换代码
  • 缺点:
    • 频率不及mysql和mysqli高
  • 三个类
    • PDO:代表 PHP 和数据库服务中间的贰个连连
      • 创建PDO对象
        • dpo($dsn,$username,$passd[,$array]):$dsn连接mysql数据库时,设置为'mysql:host=ip:port;dbname=$string',$array为调优参数
        • DSN(data source name)数据源:包罗主机地点、库名和见仁见智数据库所需驱动
        • 可用getattribute($attribute)查看属性,使用setattribute($attribute,$value)设置属性
      • 执行sql语句
        • query($string):执行有结果集重临的话语,再次回到预管理对象PDOStatement
        • exec($string):实行对表有震慑的言辞,再次来到被潜移默化行数
      • 规划错误报告
        • 动用setAttribute()设置错误报告形式
        • ERRMODE_SILENT:不展现错误,开拓职员自行检查错误
          • errorCode:重临错误号码
          • errorInfo:再次回到错误音信数组
        • ERRMODE_WAPAJERONING:爆发错误,展现一个E_WARNING消息
        • ERRMODE_EXCEPTION:发生错误,抛出PDOException极度
      • 事务管理
        • 行使setAttribute(),设置开启事务管理,关闭自动提交
        • 使用commit()提交已举行的sql语句
        • 利用rollback()回滚已施行的sql语句
    • PDOStatement:代表一条预管理语句,并在该语句被实践后代表七个荣辱与共的结果集
      • 作用
        • 企图一条语句
        • 管理结果集
      • 筹划并发送语句
        • 语句中的参数值可接纳占位符“?”
        • 占位符“:占位符名字”代替

三、PHP文件处理

fopen()函数用于展开文件。
此函数的首先个参数含有要开采的文件的名目,首个参数规定了动用哪类形式来开荒文件:

        • 行使PDO::prepare($sql)方法将语句发送到服务器策画,再次回到PDOStatement对象,存款和储蓄结果集
<html>
<body>

<?php
$file=fopen("welcome.txt","r");
?>

</body>
</html>

文件张开情势:
r  只读。在文件的起头开端。
r  读/写。在文书的初步最先。
w  只写。张开并清空文件的内容;要是文件不设有,则创建新文件。
w  读/写。展开并清空文件的开始和结果;倘诺文件不设有,则创建新文件。
a  追加。展开并向文件文件的后面进行写操作,要是文件不存在,则开立异文件。
a  读/追加。通过向文件末端写内容,来保持文件内容。
x  只写。创造新文件。借使文件已存在,则赶回 FALSE。
x  读/写。创立新文件。要是文件已存在,则赶回 FALSE 和一个谬误。
注解:要是 fopen() 不能够开垦钦赐文件,则赶回 0 (false)。

      • 给占位符传值(绑定参数)
        • 使用bind_param($key,$value)绑定参数
          • “?”占位符
            • $key设置为索引号,
            • $value设置为传送值
          • 名字占位符
            • $key设置为键名
            • $value设置为传送值

例子
只要fopen()无法开发钦赐的文本,下边的例证会生成一段音讯:

<html>
<body>

<?php
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
?>

</body>
</html>
      • sql语句实施
        • 使用execute()方法实行已绑定参数的语句
        • 使用execute($array),$array数组中加上参数,幸免绑定参数
      • 记录获取
        • 动用fetch()获取结果集中的每一条记下,重回索引和涉及混合数组
          • 参数为PDO::FETCH_ASSOC,重返关联数组
          • 参数为PDO::FETCH_NUM,重回索引数组
          • 参数为PDO::FETCH_BOTH,再次回到索引关联混合数组
        • fetchAll()获取结果集的每一条记下,再次回到二维数组
        • 选取setFatchMode()设置获取格局,就足以制止每一趟获得都要安装形式
      • 字段获取
        • columnCount()获取字段数
        • getColumnMeta()再次回到结果聚焦一列的元数据
    • PDOException:代表二个由 PDO 发生的失实。在友好的代码不应抛出三个 PDOException 异常

      • 利用try catch捕获各样特别,蕴涵连接相当、sql语句非常等

 

mamcache/memcached

闭馆文件
fclose()函数用于关闭张开的公文。

  • 一个高品质的布满式的内部存款和储蓄器对象缓存系统。通过在内部存款和储蓄器中维护一个光辉的hash表,维护内部存款和储蓄器中的数量
  • 办事原理
    • PHP第贰次询问数据时,会将数据存款和储蓄在mamcache中,后一次询问时,先拜访mamcache。
  • 安装  

    • Linux下安装

      • 基于libevent事件,所以必须先安装libevent库
    • Windows下安装

      • 暗中认可端口11211
  • memcache命令
<?php
$file = fopen("test.txt","r");
//some code to be executed
fclose($file);
?>

Command

 

Description

检测 End-of-file
feof() 函数检查评定是不是已达到文件的前边 (EOF)。
在循环遍历未知尺寸的多少时,feof() 函数很有用。
讲明:在 w 、a 以及 x 格局,您不可能读取打开的文本!
if (feof($file)) echo "End of file";

Example

逐行读取文件
fgets() 函数用于从文件中逐行读取文件。
讲解:在调用该函数之后,文件指针会活动到下一行。
上边包车型地铁例证逐行读取文件,直到文件末端结束:

get

<?php
$file = fopen("welcome.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
  {
  echo fgets($file). "<br />";
  }
fclose($file);
?>

Reads a value

 

get mykey

逐字符读取文件
fgetc() 函数用于从文件逐字符地读取文件。
讲授:在调用该函数之后,文件指针会活动到下二个字符。
上面包车型大巴例证逐字符地读取文件,直到文件末端结束:

set

<?php
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
while (!feof($file)) 
  { 
  echo fgetc($file); 
  }
fclose($file);
?>

Set a key unconditionally

四、PHP文件上传

set mykey 0 60 5

通过PHP,能够把公文上流传服务器。
请看下边这些供上传文件的 HTML 表单:

add

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

Add a new key

 

add newkey 0 60 5

请留意如下有关此表单的音讯:

replace

<form> 标签的 enctype 属性规定了在付出表单时要选取哪类内容类型。在表单供给二进制数据时,譬喻文件内容,请使用 "multipart/form-data"。

Overwrite existing key

<input> 标签的 type="file" 属性规定了应当把输入作为文件来管理。譬释尊讲,当在浏览器中预览时,相会到输入框旁边有一个浏览开关。

replace key 0 60 5

讲明:允许用户上传文件是一个了不起的辽源危害。请只有允许可相信的用户推行文书上传操作。

append

 

Append data to existing key

创建上传脚本
"upload_file.php" 文件含有供上传文件的代码:

append key 0 60 15

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

prepend

 

Prepend data to existing key

由此选拔PHP的大局数组 $_FILES,你能够从客户Computer向远程服务器上传文件。

prepend key 0 60 15

率先个参数是表单的 input name,第叁个下标能够是 "name", "type", "size", "tmp_name" 或 "error"。就像那样:
$_FILES["file"]["name"] - 被上传文件的名号
$_FILES["file"]["type"] - 被上传文件的花色
$_FILES["file"]["size"] - 被上传文件的高低,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的公文的一时别本的称号
$_FILES["file"]["error"] - 由文件上传导致的错误代码

incr

那是一种极度轻易文件上传格局。基于安全地点的牵记,您应该扩展有关如何用户有权上传文件的范围。

Increments numerical key value by given number

上传限制
在那些剧本中,我们扩展了对文本上传的界定。用户只好上传 .gif 或 .jpeg 文件,文件大小必须低于 20 kb:

incr mykey 2

<?php

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }

?>

decr

 

Decrements numerical key value by given number

评释:对于 IE,识别 jpg 文件的门类必须是 pjpeg,对于 FireFox,必须是 jpeg。

decr mykey 5

封存被上传的文本

delete

地点的例证在服务器的 PHP 一时文件夹创设了一个被上传文件的不常副本。那些有的时候的复制文件会在本子截止时熄灭。要保留被上传的文件,大家须求把它拷贝到其余的地方:

Deletes an existing key

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

delete mykey

 

flush_all

下边包车型客车台本检查测试了是或不是已存在此文件,固然不存在,则把文件拷贝到钦点的公文夹。

Invalidate specific items immediately

申明:那一个事例把文件保留到了名字为 "upload" 的新文件夹。

flush_all

五、PHP Cookies

Invalidate all items in n seconds

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当同样的Computer通过浏览器请求页面时,它同一时候会发送cookie。通过PHP,您能够创设并收复cookie 的值。

flush_all 900

创建cookie:
setcookie() 函数用于安装 cookie。
注明:setcookie() 函数必须放在 <html> 标签以前。
语法:setcookie(name, value, expire, path, domain);

stats

在上面包车型地铁事例中,大家将开创名字为 "user" 的 cookie,把为它赋值 "AlexPorter"。我们也规定了此 cookie 在一时辰后过期:

Prints general statistics

<?php 
setcookie("user", "Alex Porter", time() 3600);
?>

<html>
<body>

</body>
</html>

stats

 

Prints memory statistics

讲授:在出殡和埋葬 cookie 时,cookie 的值会自动进行 U奥德赛L 编码,在收复时开展机动解码(为幸免 ULANDL 编码,请使用 setrawcookie() 替代它)。

stats slabs

取回 Cookie 的值:
PHP 的 $_老董KIE 变量用于取回cookie的值。

Prints memory statistics

在下边包车型地铁例证中,大家取回了名称为 "user" 的 cookie 的值,并把它显得在了页面上:

stats malloc

<?php
// Print a cookie
echo $_COOKIE["user"];

// A way to view all cookies
print_r($_COOKIE);
?>

Print higher level allocation statistics

 

stats items

在底下的例子中,大家应用 isset() 函数来确认是还是不是已安装了cookie:

 

<html>
<body>

<?php
if (isset($_COOKIE["user"]))
  echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
  echo "Welcome guest!<br />";
?>

</body>
</html>

stats detail

 

 

删除cookie:
当删除cookie时,您应该使过期日期更动为过去的时间点。

stats sizes

去除的例子:

Resets statistics

<?php 
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>

stats reset

 

version

万一浏览器不扶助 cookie 该如何是好?
如果你的应用程序涉及不扶助 cookie 的浏览器,您就只能接纳其余办法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前大家曾经在本教程中牵线过了)。

Prints server version.

下边包车型地铁表单在用户单击提交开关时向 "welcome.php" 提交了用户输入:

version

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

</body>
</html>

verbosity

 

Increases log level

取回 "welcome.php" 中的值,仿佛这么:

verbosity

<html>
<body>

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old.

</body>
</html>

quit

 

Terminate telnet session

六、PHP Sessions

quit

变量用于存储有关用户会话的音信,或退换用户会话的装置。Session 变量保存的新闻是纯粹用户的,并且可供应用程序中的全部页面使用。

PHP中使用memcache

PHP Session变量:
当你运维三个应用程序时,您会张开它,做些改动,然后停业它。那很像一次对话。Computer清楚你是哪个人。它精晓您什么时候起步应用程序,并在哪一天终止。但是在因特英特网,存在叁个标题:服务器不驾驭您是何人以及你做哪些,那是由于HTTP 地址无法保持状态。

  • 类:memcache
  • 连接:memcache::connect($host,$port)
  • 1 connect("localhost",11211) or die("could not connect");

  • 其它艺术

    • add:增多数量
    • set/replace:修改数据
    • get:获取数据
    • delete:删除数据
    • ......
  • 几时使用memcache
    • 数据库中读出来的数目,方便后一次接纳
    • 会话调节中选用
  • 技巧
    • 用sql语句作为key
    • 用md5()修改sql语句,使sql语句变短,便于保存

通过在服务器上存款和储蓄用户音信以便随后利用,PHP session 解决了这一个难题(例如用户名称、购买商品等)。可是,会话音信是方今的,在用户距离网址后将被删除。借令你需求永远储存新闻,能够把数量存款和储蓄在数据库中。

会话调控:面向连接的有限扶助的一而再方式,通过会话调整,剖断用户的报到行为

Session的工作体制是:为每一种访问者创建二个唯一的id (UID),并基于这几个 UID 来存款和储蓄变量。UID存款和储蓄在cookie中,亦或透过UCR-VL实行传导。

  • cookie技术
    • 服务器给客户端的叁个文书,通过客户端的那些文件,保存用户新闻,服务器遵照文件,区分用户
    • 设置cookie
      • setcookie($key,$value,$time):头新闻,不能够有此外输出
    • 获取cookie
      • 运用全局数组$_COOKIE[]获取cookie内容
    • 删除cookieti
      • 用setcookie设置$value为空或不安装,$time设置为0或不设置
  • session技术
    • 在服务器中保存用户数量,会时有发生三个SessionID,可使用cookie和url传递该id
    • session配置
      • 布署服务器端的php.ini
    • 开启对话
      • session_start():让php的主导程序将和session有关的内建意况变量预先载入到内部存款和储蓄器中
        • 开启二个对话
          • 听他们讲cookie的session,使用该函数不可能有任何输出
        • 回到已张开的对话
    • 设置和获得session
      • 使用$_SESSION[]设置和收获session
      • session_id()获取和安装session的id
    • 删除session
      • $_SESSION=array();将session设置为空数组
      • 删除cookie中的session
      • session_destory():销毁session
    • 依据url传递sessionid,设置url的参数为session_name,session_start()后,会活动寻找该参数
    • 常量SID,当用户关闭cookie时,该常量表示session_name和session_id;当用户展开cookie时,该常量为空
    • 设置php.ini中的session.use_trans_sid=1,会使页面跳转(超链接、header、表单)前边自动增加SID
  • session高档本领
    • php.ini中,session的设置
      • session_name:设置存在cookie以及SID中的session_name
      • session.use_trans_sid:设置SID是或不是展开,开启后,可自行增加SID
      • session.save_path:设置session文件的保存地点,假诺不安装,则不生成session文件
      • session.gc_maxlifetime:设置session文件有效时间,当先该时间session未刷新,session文件将失效
      • session.gc_probability和session.gc_divisor结合使用,定义session垃圾回收可能率,算法为session.gc_probability/session.gc_divisor
      • session.use_cookie:设置session写入到cookie中
      • session.cookie_path:设置哪些文件的session写入到cookie中
      • session.cookie_lifetime:设置session的生命周期
      • session.save_handler:设置session写入措施及岗位,当班值日为user时,可采取session_set_save_handler()函数
    • session_set_save_handler(open(),close(),read(),write(),destroy(),gc()):可自定义session文件的仓库储存路线及仓库储存情势等
      • 利用该函数定义了种种艺术,像往常同样使用session
      • open():在执行session_start()时,被调用
      • close():在执行session_write_close()时,被调用
      • read():在调用open()后,被调用
      • write():脚本截至时和session_write_close()执行时,被调用
      • destroy():当session使用session_destroy()或者session_regenerate_id()被灭绝时,被调用
      • gc():由session.gc_probability和session.gc_divisor决定,任何时候军也许被调用 
      • 现实用法
      • 将Session写入数据库
      • 将Session写入Memcache

开始PHP Session:
在您把用户消息囤积到PHP session中此前,首先必须运营会话。

本文由韦德国际发布于韦德国际1946官方网站,转载请注明出处:高等课程笔记,PHP高端笔记汇总

关键词: 伟德19461946 PHP高级

Python中py文件引用另1个py文件变量的方法,py文件

#HelloWorld是文件名称,Hello是类 Python中py文件引用另1个py文件变量的方法,py文件中的类和类的法子。Python 引用别的...

详细>>