S Q L
基础例子
SQL
/*注1:原则上SQL关键字应该大写,但小写也没问题*/
/*注2:表名、字段名上的(`)是反引号(在键盘数字1的左侧)这个符号多数情况下可省略*/
/*插入数据*/
INSERT into `表名` (`字段1`,`2`,`3`) values ('值1','2', '3');
/*修改数据*/
UPDATE SET `表名` `字段1`='新值',`字段2`='新值' where 过滤条件;
/*删除语句*/
DELETE FROM `表名` where 过滤条件;
/*查询语句*/
SELECT * FROM `表名` where 过滤条件 ORDER BY 排序字段 DESC;
where 过滤条件
在 where 后面跟着过滤条件,能够帮你排除无关数据,然后配合(改、删、查)SQL语句,实现你的目的。
SQL
/*删除居住在北京的未成年(不满18)的数据*/
DELETE FROM table where age<18 and city='北京';
/*读取所有未成年(不满18或大于12)数据*/
SELECT * FROM table WHERE age<18 or age>12
以PDO 操作 MySQL 为例
PHP
//连上去
$dsn = 'mysql:dbname=php10-7;host=127.0.0.1';
$pdo = new PDO($dsn,'数据库账号', '密码');
/*******写数据(增删改,都算写)以删为例***********/
# 预定义SQL
$sth = $pdo->prepare("delete from table");
//执行SQL
$sth->execute();
/*******读数据***********/
# 预定义SQL
$sth = $pdo->prepare("select * from table");
//执行SQL
$sth->execute();
//以二维数组形式,获取所有数据,赋值给$rows
$rows = $sth->fetchAll();
//打印一下,看看都得到了什么
var_dump($rows);
可以看出,只需要连一次;读比写多了一个步骤($sth->fetchAll())。
数学运算
先看最容易看懂的,加减乘除余。
PHP
echo 1+1; //加
echo 1-1; //减
echo 2*2; //乘
echo 2/1; //除
echo 2%2; //取余数
echo 2**2; //求幂 (php5.6之后才有)
比较运算
这个很好理解,对两个值进行比较,并返回结果 true 或者 false
PHP
//数学运算,大于小于之类的我就懒得说了
var_dump( 1<2, 1>2, 1<>2 );
//判断两个值是否相等,用 == 号
var_dump( $a == $b );
//不仅判断值是否相等,还判断数据类型是否一致,用 ===
var_dump( $a === $b );
在看几个你可能没注意的
PHP
// = 号不是相等,而是赋值运算符
$a = 1;
// . 号是拼接字符串的运算符
$a = 'a' . 'b';
//+= 的意思是将 $a+1 的结果,再赋给$a
$a +=1;
//将 1 追加到 $a 的末尾(以字符串形式)
$a .= 1;
极为常用的逻辑运算
and 和 && 运算符,左右同时为true,则返回true。
PHP
$is = (1>2 and true);
//此时输出 false,因为 1>2为false,导致左表达式不成立
var_dump($is);
// && 和 and 运算符是一个意思,不过&&优先级更高
$is = (1>2 && true);
or 和 || 运算符,左右任意一个为true,则返回true。
PHP
$is = (1>2 or true);
//此时输出 true,右侧满足true的条件,所以该表达式永远返回 true
var_dump($is);
// || 和 or 运算符是一个意思,不过||优先级更高
$is = (1>2 || true);
if/switch 按照指定条件执行
PHP
/**
* 根据表达式的计算结果,决定接下来执行的代码
* 表达式的计算结果,只能是 true 或 false
* 如果结果是其他数据类型,会强行转为 boolean 值
* */
if(表达式){
echo 'a';
}else{
echo 'b';
}
switch的功能和if类似,可自行阅读文档。
for/foreach/while 循环执行特定代码
先看 for 循环,常用于指定次数的循环,比如:循环10次
PHP
// $i变量初始为0
// 每次循环$i的值递增+1($i++)
// 如果$i<10的条件成立,则继续循环;
for($i=0; $i<10; $i++){
//反复执行此代码,并输出不同的 $i 的值
echo $i;
}
再看 foreach 循环,用于遍历数组的键值对、对象的属性
PHP
$arr = [1,2,3,4,5];
// 数组有多少个键值对,就执行多少次的循环
// 循环的时候,将当前的键值对,转化为 $key、$value 变量,便于使用
foreach($arr as $key=>$value){
//输出当前循环对应的 key、values
var_dump($key, $value);
}
*foreach*语法结构提供了遍历数组的简单方式。*foreach*仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:PHP
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
其他的循环语句,可自行阅读文档。
break/continue 循环控制语句
- break 跳出循环
- cuntinue 跳过本次循环,继续下一次
PHP
//实际输出 012346789 没有5,因为5被跳过去了
for($i=0; $i<10; $i++){
if($i == 5){
cuntinue;
}
echo $i;
}
include 代码包含语句
实际开发中,我们会将频繁使用的公共代码,放在其他 .php的文件中,通过 include 来包含使用,以降低代码重复率。
先写一个函数库文件
PHP
// functions.php
function debug(){
echo '输出调试信息';
}
在程序中包含函数库,并调用相关函数。
PHP
//先包含 functions.php 这个文件
include('functions.php');
//之后就可以调用debug函数了。
debug();
PHP 实际上提供了4个包含语句,功能类似,请参考:
- include(文件名)
- 包含指定文件
- require(文件名)
- 包含指定文件,如果包含失败,程序停止运行
- include_once()
- 同一个文件仅包含一次,其他功能同 include
- require_once();
- 同一个文件仅包含一次,其他功能同 require
函数简介
函数的意义,在于“封装”常用代码,以便重复使用。
术语
- 定义
- 就是编写函数
- 调用
- 就是使用编写好的函数。
- 行参
- 定义函数时填写的参数列表,比如
xy($a,$b)
- 定义函数时填写的参数列表,比如
- 实参
- 调用函数时,逐一填写的参数值,比如 xy(1,2)
- 返回值
- 函数通过 return 输出的执行结果
- 默认值
- 定义函数时,给参数定义默认值
xy($a,$b=2) - 调用函数时,可以省略该参数
xy(1),第二个参数默认为2
- 定义函数时,给参数定义默认值
- 局部变量
- 函数内部定义的变量(函数外不可用)
- 全局变量
- 函数外定义的变量(函数内不可用)
先看一个例子
PHP
// 定义函数
// 函数功能:检查a,b,c参数的有效性,并返回 $a,$b,$c 的计算结果
function xy($a, $b, $c=3){
//如果 a,b,c 任意一个不是数字,则返回 null
if( !is_numeric($a) || !is_numeric($b) || !is_numeric($b) ){
return NULL;
}
//进行运算,并返回结果
$x = $a+$b+$c;
return $x;
}
// 调用函数,并传入数字进行运算
// 注意,没有传参数3,因为$c 有默认值,可省略
$r1 = xy(1,2);
// 这一次传递了参数3,
$r3 = xy(8,10,5);
//传入的参数,并非数字,会返回 null
$r4 = xy('a','b');
例子语法分解
PHP
function xy($a, $b, $c=3){
$x = $a+$b+$c;
return $x;
}
$r1 = xy(1,2);
逐一解释
-
function关键字,表示你要定义函数 -
xy是函数的唯一名字,调用时需要使用 -
($a,$b,$c=3) <!--17--> - `$r1` 用于接收函数返回值的变量 - `xy()` 调用函数 - `1,2` 分别对应函数的 `$a`,`$b` 参数
局部变量 vs 全局变量
参考变量 中的说明,在函数内定义的变量为局部变量(外部不可见)反之,函数外定义的变量为全局变量,函数内也不可见。
想互通?你以为函数的参数传递、返回值,是用来解决什么问题的?