什么是 PHP?
PHP(英文:PHP: Hypertext Preprocessor,中文:“超文本预处理器”);
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言;
PHP 是一种被广泛使用的开源脚本语言,可以免费使用;
PHP 文件的后缀是 “.php”;
PHP 文件能够包含 PHP 代码 以及 文本、HTML、CSS 、JS(混编);
PHP 代码在服务器上执行,而结果以纯文本返回浏览器。
PHP 基本语法
PHP 脚本以
结尾
PHP 中的注释
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
?>
PHP 输出语句
echo 一次可以输出多个值,多个值之间用逗号分隔(用于给前端返回数据)
print() 一次只能输出一个值,并始终返回 1
print_r() 函数用于打印变量,以更容易理解的形式展示
var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值
die() 函数输出一条消息,并退出当前脚本
exit() 函数输出一条消息,并退出当前脚本
设置响应头,防止乱码
header(“Content-Type:text/html;charset=utf-8”);
PHP 中的大小写
PHP中的变量名称对大小写敏感;
PHP中的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。
PHP 变量
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
PHP 没有声明变量的关键字
变量会在首次为其赋值时被创建:
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>
PHP与JavaScript都是弱类型的语言!
PHP 字符串
php中字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式
当单引号中包含变量时,变量会被当做字符串输出。
当双引号中包含变量时,变量会被解析并与双引号中的内容拼接在一起。
PHP中两个字符串拼接使用点号(.)连接起来。
使用Heredoc结构形式的方法来解决输出大量字符串的问题:
首先使用定界符表示字符串( 然后是要输出的字符串,最后以提供的这个标识符结束字符串。
Heredoc结构的字符串,包含变量可以被解析。
Local 和 Global 作用域
在函数内部测试变量:";
echo "变量 x 是:$x";
echo "
";
echo "变量 y 是:$y";
echo "函数内使用全局变量 {$GLOBALS['x']}";
}
myTest();
echo "在函数之外测试变量:
";
echo "变量 x 是:$x";
echo "
";
echo "变量 y 是:$y";
?>
PHP 数据类型
在PHP中有八种数据类型:
-
四种标量类型
布尔型(boolean)
整型(integer)
浮点型(float)
字符串(string) -
两种复合类型
数组(Array)
对象(Object) -
两种特殊类型
null
资源(Resource)
PHP 数组
数组是特殊的变量,它能够在单独的变量名中存储一个或多个值。
在 PHP 中,有三种数组类型:
索引数组 – 带有数字索引的数组
关联数组 – 带有指定键的数组
多维数组 – 包含一个或多个数组的数组
索引数组是指数组的键是整数,并且键的整数顺序是从0开始 有两种创建索引数组的方法: 自动分配索引(索引从 0 开始) 用array()创建一个数组直接赋值,数组会默认建立从0开始的整数键 $arr1 = array('a','b','c','d'); print_r($arr1); 手动分配索引 用变量的名字后跟一个中括号的方式赋值,中括号内的键必须是整数 $arr2 = []; $arr2[1] = 'a2'; $arr2[3] = 'b2'; $arr2[5] = 'c2'; $arr2[7] = 'd2'; print_r($arr2); 遍历数组,for 循环只能遍历索引数组 $num = count($arr1); 函数用于返回数组的长度(元素个数) for($i = 0; $i $arr1[$i]
"; // 双引号内可以直接使用变量 // echo "{$i}==>{$arr1[$i]}
"; // 双引号内使用花括号包裹变量 // echo '{$i}==>{$arr1[$i]}
'; // 单引号内使用花括号包裹变量无效 } foreach可以遍历任何类型的数组 foreach ($arr3 as $value) { echo "==> $value
"; } foreach ($arr3 as $key => $value) { echo "$key ==> $value
"; } 关联数组是使用您分配给数组指定键的数组,一般数组的键是字符串 创建关联数组有两种方式: $arr3['one'] = '星期1'; $arr3['two'] = '星期2'; $arr3['three'] = '星期3'; $arr3['four'] = '星期4'; print_r($arr3); $arr4 = array( 'one'=>'星期11', 'two'=>'星期22', 'three'=>'星期33', 'four'=>'星期44' ); print_r($arr4); foreach循环可以将关联数组里的所有键/值都访问到 $arr5 = array( 'one'=>'html', 'two'=>'css', 'three'=>'js', 'four'=>'php', 'five'=>'mysql' ); foreach ($arr5 as $k => $v) { if ($v == 'php') { echo "php这个值对应的key是:".$k; die(); } } 多维数组 $arr5 = array('a','b',array('c','d'),'e'); echo ''; var_dump($arr5); $arr6 = ['a','b','c']; $arr6[] = array('d','e'); echo ''; var_dump($arr6);PHP 超全局变量
超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。 PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。 如:$_GET、$_POST、$_REQUEST、$GLOBALS、$_FILES、$_COOKIE、$_SESSION等等。 $_REQUEST 变量是一个数组,内容是GET或POST方法发送的键值 $_GET 变量是一个数组,内容是由 GET 方法发送的键值 $_POST 变量是一个数组,内容是由 POST 方法发送的键值 form用get方式提交,参数值会在url地址中,如:index.php?k1=v2&k2=v2 form用post方式提交,参数值不会在url地址中 接收get参数: $_GET['表单name名称'] 接收post参数: $_POST['表单name名称'] post比get相对来说更安全,因为post传参不会暴露在url地址栏上面。 关闭警告提示 error_reporting(0); 设置响应头,防止中文乱码 header("Content-type:text/html;charset=utf8"); 将数组转为json字符串:json_encode() $arr = array('a' => 'hi', 'b' => 'hello', 'c' => '你好'); echo json_encode($arr); //会对中文unicode编码 echo json_encode($arr, JSON_UNESCAPED_UNICODE); //不对中文unicode编码 将json字符串转为数组:json_decode() $json = '{"a":111,"b":222,"c":333,"d":444,"e":555}'; var_dump(json_decode($json, true)); // true 转为关联数组
mySQL数据库
数据库:顾名思义,就是存储数据的仓库。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL是一个轻量级的数据库,与PHP配合使用效果非常好,MySQL支持大部分SQL语句。常见的数据库:oracle、mysql、sql server、MongoDB等
主键 primary key auto_increment
实际开发中每个表基本都会有一个主键,其作用是确保每条记录的唯一性,后面就是通过此主键值对表中的每条记录进行增删改查操作。
主键的值是自动增长的,设置auto_increment即可,该主键字段的值由mysql自动维护。MySql常用的数据类型:varchar、int、float、text、enum …
数据操作相关sql语句
增加 (insert into) "insert into user set name='小张',sex='女',age='21'"; #向表中添加数据 "INSERT INTO user(name,sex,age) VALUES('$name','$sex','$age')"; ... ... 删除 (delete) "delete from user where id=4"; #删除id=4的数据 ... ... 更新 (update) "update user set age='24',sex='女' where id=1"; #更新user表中id=1的age字段 ... ... 查询(select) "select * from user where sex='男'"; 查询表中所有sex="男"的数据 "select * from user where age>'18'"; 查询表中所有age>18的数据 "select * from user order by age"; 查询所有信息按age正序排列 "select * from user order by age desc"; 查询所有信息按age倒序排列 "select * from user where user='$user' and pass='$pass'"; 查询账号和密码都符合的数据 "select * from user where concat(name,sex,age) like '%$keyword%'"; 模糊查询 "select * from user order by id limit (start-1)*num,num"; start是页码,num是每页显示条数 ... ...
通过php操作mysql
通过php操作mysql的基本步骤: 连接mysql ->选择数据库->编写sql语句->执行sql语句-> 解析结果 * 1.连接数据库 $link = mysqli_connect('主机(域名/IP地址)','用户名','密码','数据库'); $link = mysqli_connect('localhost','root','123456','db_gp03'); // 连接数据库db_gp03 if (!$link){ die("连接失败:".mysqli_connect_error()); } echo "OK—数据库连接成功!"; * 2.设置编码 mysqli_set_charset( $link, "utf8" ); * 3.执行sql语句 $sql = "insert/update/delete/select ......"; $sql = "select * from user where sex='男'"; $result = mysqli_query($link, $sql); * 4.解析数据: mysqli_fetch_assoc($result),每次解析出一条数据,没有数据则返回null $rows = []; while($row = mysqli_fetch_assoc($result)){ $rows[] = $row; }; print_r($rows); // 二维数组 $rowslength = count($rows); // 获取数组长度 var_dump($rowslength); // int if($rowslength > 0){ // 有数据 echo json_encode($rows,JSON_UNESCAPED_UNICODE); // 返回json字符串数据 }else{ echo '暂无数据!'; } * 4.解析数据:mysqli_fetch_all(参数1,参数2)从结果集中提取所有数据 // 参数1:查询的结果集 // 参数2:结果类型,1或MYSQLI_ASSOC 关联数组,2或MYSQLI_NUM 数字数组 $arr = mysqli_fetch_all($result,1); // $arr = mysqli_fetch_all($result,MYSQLI_ASSOC); $arrlength = count($arr); // 获取数组长度 if ($arrlength > 0) { echo json_encode($arr,JSON_UNESCAPED_UNICODE);// 返回json字符串数据 } else{ echo '暂无数据!'; } 如果是增加、删除、修改 可以使用 mysqli_affected_rows($link) 返回受影响条数判断是否成功 * 5.关闭数据库连接 mysqli_close($link);
Q.E.D.