PHP学习笔记

    今天开始学习PHP,感觉看过就忘了,啥都留不下比较遗憾,就边看边总结了,方便自己以后看,也方便别人快速入门,或者快速复习吧(awen)。

 

 

第一部分 搭建平台

1.    可以下载一个php for windows  版本 最省劲,直接安装后自动升级iis使其支持php功能。

2.    下载一个phpstudy 软件 ,可以支持php iis 模式 php Apache 模式。安装后自动安装PHPmysql数据库,phpmyadminopensslzendoptimizer eAccelerator,傻瓜式界面设置。

3.    自己下载php,mysql,apenche,自己安装配置,网上教程一大堆自己去查。

以上三种方法随便选。

第二部分PHP语言基础

1. 组成:mysql phpApachemysqlApache组成的php服务器的好处在于跨平台。

2. php基本语法  <?php  ……  ?>或者 <script language=“php”></script>

      注释可以用:// 或者 /*……..*/或者unix shell#

3. php的变量大小写敏感,函数大小写不敏感。

4. 数据类型

integerfloatdoublereal),Booleanstringarrayobject以及一些伪数据类型。

5. array数组

类似于枚举,又类似于json数据,其实他是一个数据结构,其数据ID既可以是默认的0,1,2,3….也可以是字符串,:

ExampleA: $arra=array(1,2,3,”ok”,10.1);

ExampleB: $arrb=array(

           “name”=>“zhang wen”,

           “age”=>27,

           “sex”=>“man”

);

      ExampleC: $arrc=array(

                 “zhangwen”=>array(

                      “age”=>27,

                      “sex”=>“man”

                       ),

                 “peter”=>array(

                       “age”=>30,

                       “sex”=>“man”

                       )

);

      调用:arr[“zhangwen”][“age”];

 

       void list();

array() 一样,这不是真正的函数,而是语言结构。list() 用一步操作给一组变量进行赋值。 : list() 仅能用于数字索引的数组并假定数字索引从 0 开始。例如:list($name,$age,$sex)=$arrb[0]; print $name. “ is “.$age.”years old”;

 

array each ( array array)

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 01key value。单元 0 key 包含有数组单元的键名,1 value 包含有数据。 如果内部指针越过了数组的末端,则 each() 返回 FALSE

       例如:$arrtmp=each($arra);.

 

              each();经常与list()配合使用遍历数组,如:

            reset($arrb)

            while(list($key,$val)=each($arrb))

                  echo $key=>$val;

 

      mixed   key(array);         返回数组中当前单元的键名。  

      mixed  end(array);          把指针指向最后一个单元,并返回最后一个单元的值

mixed  reset(array);        把指针指向第一个单元,并返回第一个单元的值

mixed  current(array);    返回当前单元的值,并返回当前单元的值

mixed  next(array);         把指针指向下一个单元,并返回下一个单元的值

mixed  prev(array);         把指针指向上一个单元,并返回上一个单元的值。

注意:如果指向的单元值是0或者为空单元,则也返回false,所以不能正确的由此判断是否到达数组末端。可用each().

       bool array_key_exits(mixed key,array search);

检查给定的键名key是否存在于数组search中。

      array array_keys ( array input [, mixed search_value]);

           返回数组中所有的键名,如果制定了search_value则只返回指定值的键名。

      array array_values ( array input)

           array_values() 返回 input 数组中所有的值并给其建立数字索引。

6. 函数

      PHP函数定义与javascriptc基本相同,格式如下:

      function(args)

      {

           /*Do something……;*/

}

PHP支持函数按值传递参数,引用传递参数,默认参数值,和可变长度参数列表四种参数类型。例如:

      $s=newstr;

      1. 按值传递: function func($str){};       调用: func($s);

      2. 通过引用:  function func(&$str){};      调用:func($s);

      3. 默认参数值: function func($str=initstr);  调用:func();或者:func($s);

           值得注意的是如果有多个参数,则有默认参数值的参数必须在末尾。

      4. 可变长度参数函数(php4以上版本):function func(){};

           int func_num_args(); 来获取参数个数

mixed func_get_arg(int arg_num); 来获取参数列表数组中的某个参数

array func_get_args();  返回参数数组;

7. 一些数据类型的函数:

      a:获取数据类型:gettype();var_dump();is_int();is_string();is_boolean();is_float();

b:数据类型转换:数据类型转换可以用settype();或者在变量前加数据类型,(int)”124asdv”;结果为 124

需要注意的是,00,.0”0”,”“,NULL,未初始化数组,未初始化的对象转换成boolean类型时都为false

c:操作函数:

      bool empty ( mixed var)

如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""0"0"NULLFALSEarray()var $var; 以及没有任何属性的对象都将被认为是空   的,如果 var 为空,则返回 TRUE

bool isset ( mixed var [, mixed var [, ...]]);

该函数用来确认var是否存在, 若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE:   isset($name);

           void unset ( mixed var [, mixed var [, ...]]); 释放销毁一个变量。

float round(float val [, int precision]);

根据指定的精度precision将浮点数val四舍五入

int strlen ( string str);  字符串str的长度

int strpos ( string haystack, string needle [, int offset]) ;

字符串内检索一段字符串或一个字符。如果在字符串中找到匹配,该函数会返回第一个匹配的位置。如果未找到匹配,则返回 FALSE。注意 判断时返回值为0时,要与FALSE区分开。用”===“运算符确认。

8.时间函数

      string date ( string format [, int timestamp])

      返回将整数 timestamp 按照给定的格式字串而产生的字符串,一般用mktime()生成。如果没有给出时间戳则使用本地当前时间。默认值为 time()

int mktime ( int hour,int minute,int second,int month,int day int year,int is_dst)

参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。 is_dst 在夏令时可以被设为 1,如果不是则设为 0,或者不知道是否为夏令时的话设为 -1(默认值), PHP 会尝试自己判断

int time ( void )

返回自从 Unix 新纪元(格林威治时间 1970 1 1 00:00:00)到当前时间的秒数。

详细的设置,查文档去。

9. 表单

$_GET   $_POST  $REQUEST 是接受页面传递的表单信息的数组,基本跟asp一样$_GET是接收get方法传递过来的数据,$_POSTpost方法传递过来的数据$_REQUEST 是总的数组。如:$_GET[“name”]

 

10. 引用

    include()    reqire()

      您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。除了它们处理错误的方式不同之外,这两个函数在其他方面都是相同的。include() 函数会生成一个警告(但是脚本会继续执行),而 require() 函数会生成一个致命错误(fatal error)(在错误发生后脚本会停止执行)。例如: <?php include(“header.php”); ?>

 

11. 文件处理(学过c的省心了)

    A)文件打开

resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]]);

打开一个文件,返回一个文件句柄,失败返回FALSE;

                 filename为要打开的文件地址名称,或者一个url

                 mode 为访问类型: ”r”, ”r+”, ”w”, ”w+”,”a”,”a+”,”x”,”x+”;

                 use_include_path 是否在inclue_path中寻找文件,是则为1

                 例子:

                 $handle = fopen("http://www.example.com/", "r");

                 $handle = fopen(”/home/test.txt”,”wb”);

                 $handle = fopen(”//home//test.txt”,”ab+”);

string file_get_contents ( string filename [, int use_include_path [, resource context]]);

将打开的文件返回为一个字符串。失败返回FALSE;

array file ( string filename [, int use_include_path [, resource context]]);

把打开的文件返回到一个数组中,行号即为数据ID。失败返回FALSE;

int readfile ( string filename [, bool use_include_path [, resource context]])

读入一个文件并写入到输出缓冲。返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。

bool file_exists ( string filename);           检测文件是否存在;

bool is_readable ( string filename);         监测文件是否可读;

bool is_writable(string filename);           检测文件是否可写;

bool is_file(string filename);                   判断文件名是否为正常文件

int filesize(string filename);                    返回文件大小,出错返回FALSE

string filetype(string filename);               返回文件类型,可能的值为:fifo,char,dir,block,link,file,unkown;

int filemtime(string filename);          获取文件最后修改时间(unix时间戳),出错返回FALSE;

int fileatime(string filename);                  获取时间上次访问时间(unix时间戳),出错返回FALSE

int fileowner(string filename);            返回文件所有的用户ID,通过posix_getpwuid()来解析为用户名.出错返回FASLE,

bool is_link(string filename);                   判断文件是否一个符号链接

string readlink(string path);                    返回符号链接指向的目标

 

      B) 文件关闭

bool fclose ( resource handle);关闭一个已经打开的文件指针,文件指针必须有效,而且必须是fopen或者fsockopen成功打开的。

            例子:fclose($handle);

      C) 文件读取

string fgets ( int handle [, int length]);从文件中读取一行,并返回长度最多为length-1字节的字符串,如果换行符或者EOF都将停止读取,并将指针移向下一行。出错时返回FALSE

string fgetss(resource handle,int length[,string allowanle_tags])

      fgets()相同,不过去掉了文本中的HTMLPHP标记。第三个参数为保留的标记

string fread(int handle,int length); 从文件中读取指定长度的字节。(可安全用于二进制文件);

mixed fscanf(resource handle,string format[,string &var1]);

      从文件中格式化输入,如果只提供了前两个参数则返回数组,否则返回被赋值的数目,可选参数必须用引用传递。格式字符串中的任何空白会与输入流中的任何空白匹配。

D) 文件写入

int fwrite(resource handle,string str[,length]);

      str内容写入文件指针handle处。如果指定了length,当写入了length个字节后或者写完了str都将停止写入。返回值为写入的字符数。出错返回FALSE

int fputs(resource handle,string str[,length]);

      fputsfwrite的别名

int file_put_contents(string filename,string data[,int flag[,resource context]]);

      讲一个字符串直接写入文件,flag可以是 FILE_USE_INCLUDE_PATH / FILE_APPEND.本函数返回写入的字节数.注意本函数只是用于PHP 5 cvs

12 目录,文件夹操作

bool is_dir(string filename);                    判断文件名是否是一个目录

bool chdir(string directory);                    改变当前目录

bool chroot ( string directory)                     将当前进程的根目录改为directory

string getcwd(void);                                取得当前工作目录

resource opendir(string path);            打开目录句柄

void closedir(resource dir_handle);          关闭目录句柄

string readdir(resource dir_handle);        从目录句柄中读取条目可能是文件名也可能是文件夹名,返回目录中下一个条目的文件名,也可以认为指针移向下一条目

array scandir ( string directory [, int sorting_order])

          返回一个 array,包含有 directory 中的文件和目录。如果 directory 不是一个目录,则返回布尔值 FALSE

void rewinddir(resource dir_handle);        把目录流重置到目录开头

 

13 文件上传

    服务器端php文件用全局数组$_FILES接收上传文件的各种信息。如:

·         $_FILES["file"]["name"] - 被上传文件的名称

·         $_FILES["file"]["type"] - 被上传文件的类型

·         $_FILES["file"]["size"] - 被上传文件的大小,以字节计

·         $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

·         $_FILES["file"]["error"] - 由文件上传导致的错误代码

bool move_upload_file(string filename,string destination);

本函数检查并确保由filename指定的文件是由PHP HTTP POST上传上来的,如果合法则将其移动为 destination指定的文件,否则返回FLASE

      bool is_uploaded_file ( string filename)

判断文件是否是通过http post上传的。注意,该选项可以用来定制安全机制。如果文件时上传的手动判断为不可以访问私密的文件,如密码文档等。

 

例子:

$filename=$_FILES[“file”][“tmp_name”];

if(is_upload_file($filename))

{

      Move_upload_file($filename,”upload/uptext.txt”);

}

else

{

      echo “不是上传的文件”;

}

 

14    cookies

setcookie(name, value, expire, path, domain);

     该函数用于设置cookiesnamecookie项名称,value为值,expire为过期时间()path为该cookie的作用区间目录,domain为该值作用域。另外需要注意的是该函数必须位于<html>标签之前,另外在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。

      例子: setcookie(“user”,”awen”,time()+3600);

      如果要删除该cookie则如下:setcookie(“user”,”awen”,-3600);

$_COOKIE变量为存储了cookie的数组。如果要取回某cookie值则如下操作:

      $_COOKIE(“user”);

也可用is_set()来判断该cooike是否设置。

 

15    session

 

 

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

bool session_start ( void );

该函数用于启动session会话。必须应用于<html>标签之前。例如:

<?php session_start(); ?>

$_SESSION 变量用于存取session

例子:

      <?php

           $session[“name”]=”awen”;

?>

      可以用is_set()函数确认是否存在该session;可以用unset()函数释放该session

      bool session_destroy ( void );

           该函数用于释放所有的session对象,彻底终结session。

 

第三部分  数据库操作(MySql)

 

      本人发现(其实学的人都知道~~~),mssqlmysql的函数基本都一样,只不过mysql的函数索引字符都是以mysql开头,mssql当然是以mssql开头啦。哇哈哈。不过值得一提的是,php配置默认不支持mssql,要是想启动mssql支持,则打开php.ini文件,找到”;extension=php_mssql.dll”前面的分号(;)去掉,然后重启 Apache或者iis就可以了。

 

1.      连接数据库

l        resource mysql_connect(string servername, string username, string password);

成功返回连接标识符,失败返回false

servername 为连接服务器地址,如:”localhost:8080”

username   为连接用户名

password   为连接密码

l        resource mysql_pconnect ( [string server [, string username [, string password [, int client_flags]]]])

建立永久性数据库连接,成功返回连接标识符,失败返回false;如果在之前已经打开过永久连接,则返回此连接标识符,而不重新打开。

如果不指定参数,则函数根据默认服务器地址,以及服务器所有者用户名为用户名,并利用空密码连接数据库。

该连接不会由mysql_close函数关闭

 

2.      关闭数据库连接

bool mysql_close ( [resource link_identifier])

用于关闭mysql_connect函数生成的连接,如果没有指定参数则关闭上一个打开的连接。

     

3.      选择数据库

bool mysql_select_db(string dbName, $con);

 

4.      使用sql语句

resource mysql_query ( string query [, resource link_identifier]);

query  为要调用的sql语句

如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之。成功则返回查询结果,失败则返回false

 

5.      释放结果内存

bool mysql_free_result ( resource result);

释放生成的查询结果资源

 

6.      获取查询结果

l        array mysql_fetch_row ( resource result);

返回根据所取得的行生成的包含数字索引的数组,如果没有更多行则返回 FALSE

依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE  

l        array mysql_fetch_assoc ( resource result)

返回根据从结果集取得的行生成的以字段名为索引的关联数组,如果没有更多行则返回 FALSE依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE

 

l        array mysql_fetch_array ( resource result [, int result_type])

mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。 如果结果中的两个或以上的列具有相同字段名,最后一列将优先。要访问同名的其它列,必须用该列的数字索引或给该列起个别名。对有别名的列,不能再用原来的列名访问其内容。返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE

可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOCMYSQL_NUM MYSQL_BOTH。本特性是 PHP 3.0.7 起新加的。本参数的默认值是 MYSQL_BOTH

如果用了 MYSQL_BOTH,将得到一个同时包含关联和数字索引的数组。用 MYSQL_ASSOC 只得到关联索引(如同 mysql_fetch_assoc() 那样),用 MYSQL_NUM 只得到数字索引(如同 mysql_fetch_row() 那样)。

 

 

7 Mysql备注表:

主要功能其实也就那几个函数而已,其它函数就不详细说明了,大家去查手册,下面列出来方便查看。复习好啊。精深学就不合适了,毕竟没有永恒的语言,没有永恒的平台,只有永恒的程序设计技术。

l        PHP MySQL 函数(来自http://www .w3school.com.cn点击链接查看详细说明)

函数

描述

PHP

mysql_affected_rows()

取得前一次 MySQL 操作所影响的记录行数。

3

mysql_change_user()

不赞成。改变活动连接中登录的用户

3

mysql_client_encoding()

返回当前连接的字符集的名称

4

mysql_close()

关闭非持久的 MySQL 连接。

3

mysql_connect()

打开非持久的 MySQL 连接。

3

mysql_create_db()

不赞成。新建 MySQL 数据库。使用 mysql_query() 代替。

3

mysql_data_seek()

移动记录指针。

3

mysql_db_name()

从对 mysql_list_dbs() 的调用返回数据库名称。

3

mysql_db_query()

不赞成。发送一条 MySQL 查询。

使用 mysql_select_db() mysql_query() 代替。

3

mysql_drop_db()

不赞成。丢弃(删除)一个 MySQL 数据库。

使用 mysql_query() 代替。

3

mysql_errno()

返回上一个 MySQL 操作中的错误信息的数字编码。

3

mysql_error()

返回上一个 MySQL 操作产生的文本错误信息。

3

mysql_escape_string()

不赞成。转义一个字符串用于 mysql_query

使用 mysql_real_escape_string() 代替。

4

mysql_fetch_array()

从结果集中取得一行作为关联数组,或数字数组,或二者兼有。

3

mysql_fetch_assoc()

从结果集中取得一行作为关联数组。

4

mysql_fetch_field()

从结果集中取得列信息并作为对象返回。

3

mysql_fetch_lengths()

取得结果集中每个字段的内容的长度。

3

mysql_fetch_object()

从结果集中取得一行作为对象。

3

mysql_fetch_row()

从结果集中取得一行作为数字数组。

3

mysql_field_flags()

从结果中取得和指定字段关联的标志。

3

mysql_field_len()

返回指定字段的长度。

3

mysql_field_name()

取得结果中指定字段的字段名。

3

mysql_field_seek()

将结果集中的指针设定为指定的字段偏移量。

3

mysql_field_table()

取得指定字段所在的表名。

3

mysql_field_type()

取得结果集中指定字段的类型。

3

mysql_free_result()

释放结果内存。

3

mysql_get_client_info()

取得 MySQL 客户端信息。

4

mysql_get_host_info()

取得 MySQL 主机信息。

4

mysql_get_proto_info()

取得 MySQL 协议信息。

4

mysql_get_server_info()

取得 MySQL 服务器信息。

4

mysql_info()

取得最近一条查询的信息。

4

mysql_insert_id()

取得上一步 INSERT 操作产生的 ID

3

mysql_list_dbs()

列出 MySQL 服务器中所有的数据库。

3

mysql_list_fields()

不赞成。列出 MySQL 结果中的字段。

使用 mysql_query() 代替。

3

mysql_list_processes()

列出 MySQL 进程。

4

mysql_list_tables()

不赞成。列出 MySQL 数据库中的表。

使用Use mysql_query() 代替。

3

mysql_num_fields()

取得结果集中字段的数目。

3

mysql_num_rows()

取得结果集中行的数目。

3

mysql_pconnect()

打开一个到 MySQL 服务器的持久连接。

3

mysql_ping()

Ping 一个服务器连接,如果没有连接则重新连接。

4

mysql_query()

发送一条 MySQL 查询。

3

mysql_real_escape_string()

转义 SQL 语句中使用的字符串中的特殊字符。

4

mysql_result()

取得结果数据。

3

mysql_select_db()

选择 MySQL 数据库。

3

mysql_stat()

取得当前系统状态。

4

mysql_tablename()

不赞成。取得表名。使用 mysql_query() 代替。

3

mysql_thread_id()

返回当前线程的 ID

4

mysql_unbuffered_query()

MySQL 发送一条 SQL 查询(不获取 / 缓存结果)。

4

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值