数据类型
<?php
define("test1", 666) ; // 常量定义
$b=<<<test2
<html> xxxo </html>
test2;
echo b; //定界符,输出xxxo
$a
function temp(canshu1, canshu2) {
global $a; // 声明$a为全局
$a;
} // 自定义函数
echo gettype($a); //返回a的数据类型
echo var_dump($a); // 返回a的长度和类型
die; // 程序终止
$str = "1,2,3,4,5";
$arr = explode(",", $str); // 根据","分割str为数组
$str = implode("-",$arr); //拼接数组,"1-2-3-4-5"
$arr=array(1, 2, 3, 4);//定义数组
$fla = in_array(3, $arr);//检查3是否在数组中,返回值Boolean
trim(); // 去掉左右空格
$str=str_replace("a", "b", "c"); // 在c中将a替换成b
strrev(); // 字符反转
$arr=array('a'=>1,'b'=>2); // 键名=>键值对形式数组
unset($arr[$index]); // 删除下标为index的值
array_push($arr, 4);
array_slice($ayy, aarrint offset, [int length]); // 获得数组的子集
foreach ($arr as $k=>$v) {
//遍历k,v键值对
//只适合数组
}
max($arr); //获得数组arr中最大值
// PHP将非数值字符串当成0
array_merge($arr1, $arr2);
// 对象object
class temp{
;
}
?>
运算符
@ //错误控制运算符
=== //判断值和数据类型是否都相等
3>2?1:0; // 三目运算符
分支、循环结构
if(){
;
}
else {
;
}
for($i=0; $i<=10; $i++) {
;
}
while($i<100) {
$i++;
}
函数
function cs() {
$res = 1;
return $res;
}
// 系统函数
print_r();
function cs() {
static $res=1; //定义静态变量
$GLOBALS["a"]=1;
}
// 变量函数
// 回调函数
// 递归函数
// 时间函数
if(function_exists('date_default_timezone_set')) {fdate_default_timezone('Hongkong');} //中国时区
echo date("Y-m-d H:i:s"); // 当前日期
checkdate(); // 判断日期合法性
// 时间戳:距离1970.1.1的秒数
time(); //当前时间的时间戳
strtotime("2030-01-01 00:00:00"); //该日期的时间戳
echo h."小时".m."分".s."秒"; // 数据连接用.
PHP-传值
//_GET传值在url地址中暴露,安全性较弱
//表单传值||Ajax
<form action="a_do.php" method="POST"> // 跳转到a_do.php文件下
<input type="text" name="username" value="" />
<input type="submit" name="sub" value="submit" /> // 提交类型一定是submit
</form>
/* ajax传值*/
<form>
userName:<input type="text" name="name">
passWord:<input type="password" name="passWord">
<inputype="button" value="提交" id="btn"/>
</form>
$("#btn").click(function() {
$.ajax({
type: 'post',
url: 'formDate',
data: $("form").serialize(),
success: function(obj) { //obj为php
if (obj == "success") {
layer.alert('添加提交成功!',
function(index) {
window.location.reload();
});
} else {
layer.alert("添加提交失败")
}
},
error: function(obj) {
layer.alert("网络出现异常,请稍后重新发布!!!!")
}
});
})
// 文件上传
<input type='file' name='tt'/>
move_uploaded_file($file_tmp, $dir.$name)// 将文件传到指定目录dir下重命名为name
正则表达式
描述字符排列模式的一种语法规则
preg_match(); // 验证数据的合法性
preg_replace(); // 按规则替换数据
preg_split(); // 正则分割函数, 按规则分割数据
preg_match_all(); // 获得匹配规则的数据
$zz = "/正则内容/";
$zz = "/^正则内容$/"; // ^字符串首匹配,$字符串尾匹配
//验证手机号码格式是否正确
$zz="/^1[0-9]{10}$/";
if(preg_match($zz, $phone)) echo 1;
//验证邮箱地址是否正确
$zz="/^\w+@[a-z-A-Z0-9]+\.[a-zA-Z0-9]{2,4}$/"; //+不是连接符,是次数元字符
//验证网址链接
$zz="/^htttps?:\/\/w+\.+\w+$/"
$zz="/^(http)|(https):\/\/\/w+\.+\w+/$/"
//验证真实姓名为汉字
$zz="/^[^u4E00-u9FA5]{4, 10}$/";
//将显示手机号码中2,5,9,6,3替换成*
preg_replace("/[293]/"'*',"15888261303");
PHP数据库操作
<?php
include("other.php");
include_once("other.php"); // 仅包含一次
$conn=mysqli_ connect("localhost","root","root");
if(!$conn) {
die("链接数据库失败!");
}
mysql_select_db($conn, "liuyan"); // 设置操作的数据库
mysql_query($conn, "set names utf8"); // 设置操作编码
$sql = "insert into obj_message set nicheng='".$arr['username']."', shijian='".date("Y-m-d H:i:s")."'";
$rst=mysqli_query($conn, $sql);
if($rst) {
echo 1;
}
else echo 0;
?>
数据库引擎、多表查询、外键、索引、用户及权限
外键
外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接
主要作用是保证数据的一致性和完整性,并且减少数据冗余
-- 由于一个班级可以有多个学生
-- 定义外键约束
ALTER TABLE student
ADD CONSTRAINT fk_class_id -- 外键约束的名称fk_class_id可以任意
FOREIGN KEY (class_id) -- 指定了class_id作为外键
REFERENCES class (id); -- 指定了这个外键将关联到class表的id列(即class表的主键)
-- 删除外键约束
ALTER TABLE student
DROP FOREIGN KEY fk_class_id;
由于外键约束会降低数据库的性能,大部分互联网应用程序为了追求速度,并不设置外键约束,而是仅靠应用程序自身来保证逻辑的正确性。这种情况下,class_id仅仅是一个普通的列,只是它起到了外键的作用而已。
项目架构分析
// 展示模块
// 管理模块
// 项目架构核心:1.mysql数据库的构架 2.用户/管理员权限的分配
PHP面向对象编程
面向对象编程(Object Oriented Programming,OOP)
class Lei {
public $temp1; // 在任何地方被访问
protected $temp2; // 可以被其自身以及其子类和父类访问
private $temp3; // 只能在该类 里面访问
public function study($name='gg') {
echo $this->$name;
} // 方法
} // 类名首字母大写
$opp = new Lei;
$opp -> study(); // 调用方法
// 构造方法
// 构造函数是创建对象时,由系统自动调用
public function __construct(形参列表){
// 完成对成员属性的初始化
}
// 析构方法
public function __destruct(){
// 释放该对象的资源
}
// 魔术方法
$opp->__get(); //读取不可访问属性的值
$opp->__set(); //给不可访问属性赋值
// 不可访问的属性:属性不存在、protected 或 private
// 继承
class 类名 extends 父类名{
//属性,方法等等.
}
// 抽象类
abstract class 类名 {
abstract 修饰符 function 函数名(参数列表); //注意这里没有方法体!
}