PHP

作者: _Enco_ | 来源:发表于2017-08-24 10:12 被阅读0次

PHP

  • 超文本预处理器
  • 非常适合web开发(脚本语言)
  • 运行在服务器端
<?php
  echo 'hello world';
?>

基本语法

  • 文件后缀.php
  • 如何嵌入到HTML页面(使用php标签)
<?php
  echo 'hello world';
?>
  • php代码可以嵌入到HTML任何位置
  • php里面的语句是以分号结束(必须)
  • 路径和文件名称不能出现中文
  • 两种运行方式:1.虚拟路径(网址)的方式;2.命令行的方式;
    2.命令行的方式
<? php 
  for($I = 1;$I <10;$I++){
    echo $I . PHP_EOL;
}
?>
  • php输出方式
echo '输出字符串';
var_dump(任意类型数据);
exit(); //该语句执行完成以后,不会再有往下执行;

php变量

  • 变量声明
$ //$后面跟字母、数字、下划线(、中文)
$a = 1; //声明了一个整型变量
$b = 2.03;
$c = '12\'3';
  • 支持可变变量
$var1 = 'name';
$name = '123';
echo $$var1; // 打印 123 
  • 变量引用
$username1 = 'enco';
$username2 = 'www';
$username1 = $username2;
echo $username1; // 打印www
  • 地址引用
$username1 = 'enco';
$username2 = 'www';
$username1 = &$username2; //保存username2的空间地址
$username2 = 'encowww';
echo $username1; // 打印 encowww
  • 变量名称支持中文
  • echo输出的时候会去解析字符串内的变量名
$name = 'enco';
echo "$name是个人";//此时打印的是 $name是个人 这个变量的值,没有这个变量,报错
$name = 'enco';
echo "{$name}是个人"; //使用打括号将变量扩起来,防止污染全局
  • header('Content-Type:text/html;charset=UTF-8') (php规避中文乱码)

三种注释方式

  • /**/
  • //

变量类型

$str = '字符串';
//单双引号的区别
//单引号里面所有内容看作字符串
//双引号会去分析字符串里面是否有变量
$name = '安可';
$str = '$name是班长';
echo $str;
$str1 = "$name是班长"; //报错
$str1 = "{$name}是班长";
$str2 = $name . '是班长';
  • 般情况下推荐使用单引号

  • . 是字符串连接

  • 数组

$arr = ['enco','www'];
echo $arr[1];
var_dump($arr); //打印数组
  • 关联数组
$arr = array('name'=>'enco','age'=>18);
var_dump($arr);
echo $arr['name'] . '年龄是' . $arr['age'];
  • 多维数组
$student = [
    array('name'=>'enco','age'=>18),
    array('name'=>'enco','age'=>18),
    array('name'=>'enco','age'=>18)
]
$student[2]['name'];
foreach($student as $key=>$value){
  echo ($key+1) . $value['name'] . '年龄是' . $value['age'] . '<br>';
}

获得变量的类型

  • gettype
$a = 1;
echo gettype($a);
$b = 20.03;
echo gettype($b);//double
echo GETTYPE($b);//double

注意:自定义的变量名区分大小写
内置的关键字或者函数名称不区分大小写

  • 判断是否是指定类型
$arr = [];
var_dump(is_array($arr));

数据库操作

  • 插入
$db = new mysql('localhost','root','root','database');
$db->query('SET NAMES UTF8');
// INSERT INTO表名(字段1,字段2,字段3.。。。)VALUES(12,'信息1','信息1');
$sql = 'INSERT INTO members(username,passwd,tel,retimes)VALUES('enco','anke123321','15528189938','2017-8-25 10:30:20')';
$db->query($sql);
$db->close();
  • 查询
$db = new mysql('localhost','root','root','database');
$db->query('SET NAMES UTF8');
// SELECT 字段1,字段2.。。。。FROM 表名 WHERE 判断条件(用AND连接);
$sql = 'SELECT id, username,passwd FROM member WHERE username = "'.$_POST['username'].'" ';
$result = $db->query($sql);
$row = $result->fetch_array(MYSQLI_ASSOC);
if($row['id']){
    echo '账号正确';
}else{
    echo '你输入的账号不存在';
    exit;
}
if($row['passwd'] == md5($_POST['passwd'])){
    echo '密码正确';
}else{
    echo '密码错误';
    exit;
}
$db->close();

  • 取出数据库的总数量
SELECT count(*) AS nums FROM 表名 WHERE 判断条件
  • 引用、包含其他php文件
require '相对路径'; // 如果文件不存在,直接返回致命错误,不会执行之后的程序
include '相对路径'; // 如果文件不存在,返回警告错误,会执行之后的代码
require_once '相对路径'; //如果之前有引用这个路径文件,不会再次引用
  • 删除
DELETE(没有字段) FROM WHERE (AND连接)
  • 修改
UPDATE 表名 SET 字段1 = ‘新的值’ , 字段2 = ‘新的值’  WHERE 判断条件;

上传文件

  • 上传文件时,method必须是post
<form enctype = "multipart/form-data"> // 表单信息编码 
</form>
  • 存储上传文件在服务器
<?php
  der_dump($_FILES);
  move_upload_file($_FILES['img']['tmp_name'],'存放目录路径' . $_FILES['img']['name']);
?>

查询LIKE

  • LIKE “%关键词%”;
'SELECT * FROM 表名 WHERE 字段 LIKE “%关键词%”';

%关键词% : 包含关键词的
%关键词 : 以关键词结束的
关键词% : 以关键词开始的

查询结果排序

SELECT FROM WHERE ORDER BY id ASC

ORDER BY 字段 ARC 按照字段升序排列
ORDER BY 字段 DESC 按照字段降序排列
ORDER BY 字段1 ARC,字段2 ARC

PHP 的面向对象

class Person {
  public $name;
  public $age;
  //定义方法
  //构造方法
  function  __construct($name,$age){
    $this->name = $name;
    $this->age = $age;
  }
  function say(){
    echo '我是'. $this->name;
  }
  //析构方法(自动执行)
  function __destruct(){
    echo '完成';
  }
}
$person1 = new Person('enco',18);
$person1->say();
$person1->name;
  • unset () 方法,删掉响应的元素
unset($_POST('id'));

session 和 cookie

  • session 存储在服务器上面的,这样子信息更安全
  • 要在公用文件里面写 $_SESSION || session_start();
  • 要使用session时必须写session_start();因为默认session未开启
$_SESSION['username'] = 要传的值;
//跳转页面
header('Location:./跳转页面相对路径');
  • cookie 存储在本地的
setcookie('username',要传的值,time()+30*24*60*60);//最后传的是cookie保存的有效时间
setcookie('username',要传的值,time()+30*24*60*60);
$_COOKIE['username']; //获取cookie值

php的类的继承

  • parent:: (js中为super())
class DB {
  pretected $dblink;
  public function __construct ($config) {
      $this->dblink = new mysqli($config['host'],$config['user'],$config['passed'],$config['dbname']);
      $this->blink->query('SET NAMES UTF8');  
  }
class news extends DB {
    function __construct ($config){
      parent::__construct ($config);
      var_dump($this->dblink);
  }
}
$config = array('host'=>'localhost','user'=>'root','passwd'=>'168168','dbname'=>'study');
$mynews = new news($config);
}

访问权限控制

  • public 是指外部可以直接访问的属性或者方法
  • protected 是指外部不可以直接访问的属性或者方法,子类可以访问
  • provate 只能自己内部使用的属性或者方法,包括子类也不能使用

php 函数定义

  • 函数默认值
function add($a=0;$b=0){
  return $a+$b;
}
  • 函数不能重复定义

php 常见方法

  • 表单的数据处理
  • 转义函数 addslashes
  • 转实体字符函数 htmlentities(); htmlspecialchars 反转 htmlentitles_decode();
  • 富文本编辑器
  • trim() 清除空格

SESSION 的销毁

unset($_SESSION['id']);
session_destroy();

define 定义一个常量

define('NAME','ecno');
define('NAME','ecno22222');
echo NAME; // 打印enco

定义的常量不能被修改

  • 检查常量是否已经被定义
if(defined('NAME')){
  echo '常量已经被定义';
}

and or oxr 的优先级比等号低

$f = 1 oxr 0;
echo $f; // 这里$f = 1;
$f = (1 oxr 0);
echo $f; // 这里true;

SELECT n.cid, n.ccid, n.title, n.realname, c.cname FROM news AS n
LEFT JOIN category AS c
ON n.ccid = c.id
WHERE n.id > 3

相关文章

网友评论

      本文标题:PHP

      本文链接:https://www.haomeiwen.com/subject/zhvsdxtx.html