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