PHP语言速成

跟javascript 差不多,也是个脚本语言,我也用一篇文章写完也没问题吧?

关于javascript的基本语法 http://blog.csdn.net/skyjie6/article/details/38659407


第一章、使用PHP

PHP的开始标记和结束标记

①<?PHP             ?>

如果将php.ini中的short_open_tag设置为On,可以简写为<? 和?>

②<%             %>    

这个是ASP风格,需要将php.ini中的asp_tags设置为On

③<script language="PHP">                     </script>           

html语法来的


嵌入HTML

不同javascript的是,PHP更多放在<body>  </body>标签之间

<html>
<head>
<title>第一个PHP程序</title>
</head>
<body>
 <?PHP 
   echo "helloworld- -!" ;
   echo "使用PHP!" ;    //双斜杠是注释,echo是输出语句
                        # 井号也是注释
                       /*   这个也是注释   */
?>
</body>
</html>



第二章、基本元素

常量

define("JIE","576984704");

这样JIE 就是一个常量了,而且再次使用define也不能修改.

变量

boolean     布尔类型,true和TRUE不区分大小写
integer       整形,4个字节
float,           也叫做double
string          字符串
array           数组类型
object         对象类型
resource    资源类型
NULL          空值
伪类型         如mix(字符串或数组),number(整形或浮点型),callback(回调)

<pre name="code" class="php"><?PHP
    $a="10个变量";      //使用$ 表示一个变量
    $b=2;
    $c=TRUE;
    $b=$a;         //值传递,此时b的类型变为string
    $c=&$a;        //地址传递
    $d=$a * 2;     //类型转换,此时d的值是20;
?>
 
运算符
加减乘除求余:+ - * /  %
赋值运算符   =
位运算符    &按位与,   | 按位或,   ^ 按位异或,  ~ 按位非,  << 左移    >>右移
比较运算符    ==    ===   != (<>)  !==  >  <
执行运算 :  反引号 '  '  ,作用相当于shell_exec()函数,执行一个系统命令
++运算符:   ++$a,   $a++
逻辑运算符:    and(&&)  ,  or (||)  , !  , xor 异或  
字符串运算符:  .  点,用来标示连接前后两个字符串,相当于+

语句

条件语句

if(......) 
elseif(..........)
else    ...........
switch()
循环语句
while(...)
do while(...)
for( ;  ;  ;)
continue  
break;

字符串

通常用一对单引号,或者一对双引号括起来
                      'hello'           "hello"
如果要输出引号,记得加 \  作为转义
其他转义符号   \n换行        \r 回车         \t  Tab
字符串变量可以看做数组
$a[1] 表示第二个字符
函数
int  strlen( 字符串,字符编码)    获取长度,编码默认是ANSI编码,中文是GBK或者gb2312
int strcmp(string, string )    区分大小写的比较,前者大返回正数, 小返回负数, 等返回0
int strcasecmp(string,string)   同上,不过是不区分大小写
int strcpn(string &subject, string $mask, int $start,int $length)    返回subject中第一组字符串的长度,该字符串要求全部元素都能在mask中找到
int strcspn(string &string1, string $string2, int $start,int $length)  返回string1中第一个能在string2中找到的元素的位置
mixed str_replace(mixed $search, mixed $replace, mixed $subject, int &$count) 将subject的search替换为replace,count是替换次数
string strtr(string $str , string $from ,string $to)  将str 字符串中的from 改为to
string nl2br( string)      将字符串中所有"\n" 换成 <BR>   这样在HTML中才会换行
htmlentities(string , quotestyle, character-set)   转换为HTML的实体
array parse_url( string $url)            解析URL字符串,返回一个数组,分别存放scheme,host,user,pass,path,query,fragment;
string urlencode( string $str)          URL编码.将非字母数字和"-" " _ " "." 的字符转化为%跟两位16进制.
string urldecode( string $str)          URL解码,就是跟上面的对着干

数组

他是内存上的连续空间
每个数组都有key值和value值
数组里面的元素可以是数组~~~(数组的数组
定义数组array(  key =>  value  )  不写key的话默认key是0,1,2,3...
print_r()函数可以打印arr的内容
也可以调用var_dump() 打印内容,连类型也打印
访问数组元素
$arr[key]
函数
array_unshift($array, 添加值1,添加值2.......)     在开头插入元素
array_shift(array &$array)                                   在开头删除一个元素
array_push($array, 添加值1,添加值2.......)        在数组尾插入元素
array_pop(array  &$array)                                   在数组尾删除一个元素
bool in_array(mixed $needle,  array $haystack, bool $strict)     在haystack中搜索needle,区分大小写的,如果strict是true还区分类型的
mixed array_search(mixed $needle ,array $haystack, bool $strict)      同上,不过返回的是第一次匹配的key值
array_key_exists(mixed $key, array $search)             search中搜索key值
array array_keys(array $input ,mixed $search_value, bool $strict)         返回所有key值,或者指定返回所有对应search_value的key值
array array_values( array $input)                                      返回所有value
int count(array   $arr)                                              array的数组元素个数
array array_count_values(array $input)                统计每个元素出现的次数,元素变成新数组的key值
mixed current ( array  &$array  )                       返回当前指针的元素
mixed  next(array &array)                                      使指针指向下一个位置
mixed  prev(array &array)                                      使指针指向前一个位置
mixed  end(array &array)                                      使指针指向最后一个位置
mixed  reset(array &array)                                      使指针指向第一个位置
foreach  ($array  as $value )                                历遍数组,每次value等于每一个元素
array array_unique(array $array)                        去掉重复的元素,保留key值的
bool asort( array &$array)                                  对value升序排序
bool arsort( array &$array)                                 对value降序排序
arrayarray_reverse ( array $array )                   反序
array array_fill(int $start_index,int $num,  mixed $value)         从第index开始填充num个value下去
array array_merge(array1,array2,...)                              合并数组
array array_chunk (array  $input, int $size,bool $preserve_keys) 从input中拆分大小为size的数组,第三个参数是否保留原名
number array_sum(array)                                       求数组元素总和
第三章、接受用户数据
这里说到用到的表单,用的是javascript,也不赘述了。
表单的提高数据方式分为
①GET提交方式
<form  id="form1"   method="get"   action="ShowInfo.php" >
使用GET方法提高数据时,URL格式就是  http://网址/处理脚本?参数名=参数值
例如在百度随便搜点东西,然后看他的网址就是这种啦
在PHP中, $_GET[ 参数名]  读取GET提交的表单数据

②POST提交方式
因为url长度有限,同时有些数据(如账号密码)不想被人看到,就可以采用POST方式
$_POST[参数名]  获取数据

③POST 和 GET 混合使用
<form  id="form1"   method="post"   action="ShowInfo.php?flag=1" >
POST来提交数据,flag=1表示脚本参数,是GET的一种

验证表单
这个只要在提交按钮加上 οnclick="abc(this.form)" 即可
其中abc(this.form) 是自己定义的一个函数

用户名
密码    


像上面的

	<form method="POST" action="check.php">
		用户名<input type="text" name="txtUserName" value="输入用户名" size="20" /><br />
		密码    <input type="password" name="txtPwd" size="20" /><br />
		<input type="submit" value="登陆" name="B1" /><br />
		<br />
		
	</form>

其中
<script language="javascript">
function form_onsubmit()obj
{
if(obj.txtUserName.value==""){
alert("请输入用户名";
return false;
}
if(obj.txtPwd.value==""){
alert("请输入密码";
return false;
}
}
</script>

check.php
<?PHP
   $UID=$_POST['txtUserName'];
  $PWD=$_POST['txtPwd'];
 if($UID =="admin" and PWD =="pass")
   echo("您已经登陆成功");
 else  echo("登陆失败");
?>

POST方法上传文件

像上面,简单几句话,其中enctpe="multipart/form-data" 是上传文件固定格式

<form nam="form1" method="post" action="upfile.php" enctype="multipart/form-data">
	<input type="file" name="file1" style="width:80%" value="" />
        <input type="submit" name="Submit" value="上传" />
</form>

可以使用$FILES[文件name][内容]来访问

$FILES['file1']['NAME'] :表示文件名称

upfile.php

<?PHP
  //getcwd()是返回当前工作目录
  $upload_dir=getcwd(). "\\images\\";
  if(!is_dir($upload_dir))                  //is_dir($filename) 判断文件或目录是否存在
          mkdir($upload_dir);               //mkdir($pathname)   创建目录

   function makefilename(){
      $curtime=getdate(){                              //获取当前的时间
       $filename=$curtime['year'].$curtime['mon].$curtime['mday']."jpeg";
       Return $filename;
   }
 $newfile=$upload_dir.makefilename();
 if(file_exists($_FILES[file1]['tmp_name'])){          //file_exists($filename)判断文件是不是已经存在
       move_uploaded_file($_file($_FILES['file1']['tmp_name'],$newfile);    //['tmp_name']是文件保存在服务端临时的文件名
  }
?>


第四章、自定义函数

跟其他语言有点像,格式如下

function 函数名 (参数)
{
   函数体
}

函数内的变量都是局部变量,当然函数内可以定义静态变量

静态变量:函数结束时不释放,而是保留下来,下次再调用这个函数时,值不变.

static  %count=1;       第一次调用时1,以后每次调用不一定是1;


参数可以按值传递,也可以是按引用传递(变量前加&)

如果参数后面有等号和数值,那么一开始就是有默认值

参数个数可变长,比如sum(),可以食sum(1,2,3,4,5,6,7);

return返回一个函数值,可以是任何类型.要返回多个值则可以返回数组.然后结束函数

func_num_args()     :返回有多少个传递给函数的参数

func_get_arg()          :返回传递给函数参数的列表

func_get_args()        :返回传递给函数参数的列表组成的数组

<?PHP
  $a=100;        //全局变量
  function setNumber(){
  $a=10;       //局部变量  ,如果要在函数内使用全局变量的话应该加一句 global $a;
  echo($a);           
  }
  setNumber();
   echo($a);     //此时$a还是100,局部变量在函数退出时已关闭.
?>

引用函数库

函数一般不希望被用户看到,所以写在其他php文件中,然后需要时再导入,就可以用到里面的函数了

有以下几种方法:

①include("lib\mylib.php");

②require("lib\mylib.php");

③require_once("lib\mylib.php");

以上基本用法相同,不过当找不到要找的文件时,include发出警告,require是提出有错误.而require_once则是升级版,可以防止重复导入.


第五章、面向对象

<?php
class  ABC                        //类名
{
  var $str="MYSTRING";            //定义成员变量,允许同时赋值
  public   $a;                    //定义公有变量
  private  %b;                    //定义私有变量
  function output(){              //定义成员函数
                    echo($this->str);   
                   }
} 
?>

同时也像其他语言那样有 构造函数析构函数,他们都是规定名字

构造函数:  function  _construct()  {}

析构函数   function  _destruct ()    {}


使用定义new来定义一个对象

$mystr=new MyString('admin','pwd');

使用static 定义静态变量或者静态函数

静态变量和函数不属于任何一个实例化的对象.

例如user类里面有静态成员count.每当有个user对象产生时count++,销毁时count--.

而静态函数get_count用来获取count.

$this->count  对象成员 

$self::count   静态成员


继承:这个类似C++,不详细说

class B extends A          表达为B继承A.


使用abstract  修饰函数,变为抽象

抽象类函数是指如果有子继承,那么这个子类必须重载父类的抽象类函数,否则报错


复制对象

①直接用"="  :  $newcircle  = $mycircle;

②使用函数

function drawcircle ($shape){
  if($shape  instanceof  shape){    //instanceof  判断是否某个抽象类
              $shape -> draw();
          }
}
上面这里其实相当于一个虚函数.就是当参数是直线时,draw的对象是直线.是圆时,则draw圆


第六章、会话处理

HTTP为无状态的协议,每次请求都是独立的。

比如说购买界面你登陆了,但是评论界面还需要再登陆一次,因为界面间是独立的。

常用的有 cookieSession 两种方法


cookie

设置cookie

bool setcookie ( string $name , string $value, int $expire,string $path , string $domain ,bool $secure ,bool  $httponly)

name 表示为Cookie名,  value 是值,     expire就是秒为单位的时间

path 是服务器路劲,该目录下能访问cookie

domain 是Cookie的域名,此域名下能访问

secure  是通过HTTP连接来传输Cookie

httponly       指定只有http协议才能访问

setcookie("TestCookie" , $value ,time()+60*60*24*30);  //创捷一个cookie,名字为TestCookie,值是变量value,时间是60*60*24*30秒,就是一个月

再来一例子:

<?php
if(isset($_COOKIE["num"]))  $num=$_COOKIE["num"];   //isset判断是否存在cookie
                        else   $num=0;                //$_COOKIE 这个表示所有cookie的集合
          $num=$num+1;
          setcookie("num",$num,time()+60*60*24*30);
?>

删除cookie

setcookie("TestCookie" ," ",time()-3600);  //时间设置为1小时前,相当于删除


平时常用的网站都有一周内自动登录,思考下是什么原理?

首先定义一个<input name="checkboxCookie"  type="checkbox"  checked>

然后用户名和密码的的值读取cookie  :<input type="text" name="username"  value="<?PHP echo($_COOKIE["username"]);?>  ">

然后提交按钮的处理脚本是check.php~~~表示要是成功登陆的话则保存信息


Session

session不同之处在于他是保存在服务器上的,分配每个用户一个对应的Session ID(SID)

开始会话:

bool  session_start(void);           会随机获得SID.

如果要自行设置SID的话:

string session_id(string $id)              写了id的话就是设置id,没写的话就是获取当前的id

string session_name(string $id)      效果同上的, 写了name的话就是设置name,没写的话就是获取当前的name


跟$_COOKIE一样,用$_SESSION表示session的全局数组

$_SESSION["last_visit"]表示上次访问网页的时间           $_SESSION["num_visits"]表示访问网页的次数

删除变量,也用于删除会话变量

void unset(mixed $var, mixed $var2,.......)

销毁会话

session_unset(void)                   //删除所有会话变量,但不删除文件和ID,相当于释放了$_SESSION

session_destroy(void)               //删除当前用户的文件和ID,但保留会话变量


第七章、MySQL数据管理

SQL语句就略过了

PHP使用MySQLi函数,需要找到php.ini

然后把;extension=php_mysqli.dll  前面的;删去,保存后复制到windows的目录下重新启动Acpache服务就可以了


连接数据库(三种方法

$mysqli=mysqli_connect "(服务器" ,  " 用户名" ,  " 密码" , "数据库名"  )

②上面的函数也可以改为 mysqli(服务器" ,  " 用户名" ,  " 密码" , "数据库名"  )

③使用mysqli_init()函数

$mysqli=mysqli_init();

$mysqli->real_connect(服务器" ,  " 用户名" ,  " 密码" , "数据库名"  )


执行SQL语句(二种方法

mysqli_query(连接对象,SQL语句)

$conn->query(SQL语句)           $conn是已经连接的


其他:

$conn->multi_query()  一次执行多个SQL语句

Sconn->store_result()   返回一个SELECT语句结果集

$conn->next->result()     获得下一个结果集


关闭数据库

mysqli_close($conn);


<?php
   //第一步连接数据库
  $conn=mysqli_connect("localhost","root","pass","MySQLDB")
  if(empty($conn)) {                                                    
           //判断是否连接成功,die相当于exit(),退出当前脚本
           die("mysql_connect failed:" .  mysqli_connect_error()  );          
          }
          mysqli_query($conn, "SET NAMES gb2312");                  //设置字体为utf8,不然是乱码
          $query="SELECT EmpName FROM Employees;";
          $query .="SELECT DepName FROM Department;";
          if($conn->multi_query($query)){
                         do{
                          if ( $result = $conn ->store_result() )
                                  {
                                     while($row = $result->fetch_row() )    //获取一条记录
                                             {     echo($row[0] . "<br>") ;  }
                                     $retult->close();
                                    }
                              }while ($conn->next_result());
                     }
                 $conn->close();
?>


分页式

代码好长啊不打了好不好啊,我写关键代码自己组合吧

$_GET['page']     //获取当前页码

例如:   http://localhost/viewPage.php?page=2        //$page-1表示上一页,+1就是下一页.  当=$PageCount就是最后一页啦

$sql = "SELECT COUNT(1)  FROM Employees"      //使用COUNT获得记录数

$results = $conn -> query($sql);           

用除法将总记录数除以页数来分页显示




到此为止,已经学完PHP基本所有语法了

至于留言板啊,公告啊,二手平台那些实验都是以上组合起来的,这里不能嵌入PHP代码就不释放啦(才不是懒

总之就是用上的来组合.只能说是基础,要深入,还得再借书学习啊



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值