注:该文章为本人笔记,难免有差错,不喜勿喷,欢迎大佬指正、指导。
一、php基础语法
1.输出语法:
echo 你要输出的内容
print_r(你要输出的内容)
var_dump(你要输出的内容)
三种输出语法的区别:
echo:
只能输出基本数据类型,输出true,会转换成1,false会转换成 空 ,输出复杂数据类型会报错
-
? ?$str='hello world';
? ?$num =100;
? ?$arr = [1,2,3];
? ?$b1 =true;
? ?$b2=false;
?
? ?echo $num;
? ?echo '</br>';
? ?echo $str;
? ?echo '</br>';
? ?echo $arr;//没办法转换字符串
? ?echo '</br>';
? ?echo $b1;
? ?echo '</br>';
? ?echo $b2;
? ?echo '</br>'; 执行结果? 100
hello world
? ? //没办法转换字符串
Notice: Array to string conversion in G:\phpstudy\WWW\jichuyufa.php on line 46
Array
1
? ?//false 转换成 空
print_r()
-
输出true,会转换成1,false会转换成 空 ,所有数据类型都能输出 -
? ?$str='hello world';
? ?$num =100;
? ?$arr = [1,2,3];
? ?$b1 =true;
? ?$b2=false;
? ?print_r($num);
? ?print_r($str);
? ?print_r($arr);
? ?print_r($b1);
? ?print_r($b2); 执行结果?? 100hello worldArray ( [0] => 1 [1] => 2 [2] => 3 ) 1
? ?//false 转换成 空
var_dump()
-
可以输出所有数据类型 -
每一个数据类型在输出的时候都会有详细信息输出 -
? ?$str='hello world';
? ?$num =100.234;
? ?$arr = [1,2,3];
? ?$b1 =true;
? ?$b2=false;
? ?var_dump($num);
? ?echo '</br>';
? ?var_dump($str);
? ?echo '</br>';
? ?var_dump($arr);
? ?echo '</br>';
? ?var_dump($b1);
? ?echo '</br>';
? ?var_dump($b2); 执行结果?? float(100.234)
string(11) "hello world"
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
bool(true)
bool(false)
2.解决中文乱码
+当你在php输出中文内容的时候,会出现中文乱码
+原因:没有告诉浏览器输出内容用什么字符集来解析
+告诉浏览器一些事情,我们使用header()
?header('content-type: text/html;charset=utf-8;');
3.字符串
3.1php里面字符串分成两种
+单引号:普通字符串
+双引号:特殊字符串(可以直接解析变量)
? ?$age = 18;
? ?$str='你好,我今年 $age 岁了';
? ?$str2="你好,我今年 $age 岁了";
? ?echo $str;
? ?echo '</br>';
? ?echo $str2;
执行结果??
你好,我今年 $age 岁了
你好,我今年 18 岁了
3.2字符串拼接
+php 里面加号(+)只有一个作用,就是数学运算
+拼接字符串使用 点(.)
$str3 =$str . '---' .$str2;
echo '</br>';
echo $str3;
执行结果??
你好,我今年 $age 岁了---你好,我今年 18 岁了
4.流程控制语句
=> if ( ) { }
for ($i = 0; $i < 10; $i++) {
echo $i . '----</br>';
}
=> switch ( ) { }
=> for ( ) { }
=> while ( ) { }
=>do {...} while ( )
5.数组:
5.1.索引型数组
-
$arr = array(数组1,数组2,...) -
等价于 js里面 [数据1,数据2,数据3...] $arr = array('hello','world');
$arr = ['hello','world'];
//以上两种结果一样
print_r($arr);
执行结果??
Array ( [0] => hello [1] => world )
5.2.关联型数组
-
$arr = array( key => value,key2 = >value2,...) -
按照键值对排列,等价于js里面的{ key:value,key2:value2,... }
? ?$arr = array(
? ? ? ?"name" => "jack",//注意,这里用的是逗号
? ? ? ?"age" => 18
? );
? ?print_r($arr);
执行结果??
Array ( [name] => jack [age] => 18 )
访问数组里面的成员
? ?echo '</br>';
? ?echo $arr["name"];
? ?echo '</br>';
? ?echo $arr["age"];
执行结果??
jack
18
二、php操作mysql数据库流程
数据库:关系型数据库,非关系型数据库
mysql数据库:
-
关系型数据库 -
存储数据的"仓库"(磁盘:d盘,e盘) -
由很多的database(库),理解为文件夹 -
一个网站的内容放在一个库里面 -
每一个库由多个表组成,理解为一个文件 -
表由字段(表头)和数据组成
1.和数据库建立连接
-
语法:$link = mysqli_connect('IP','数据库用户名','数据库密码','你要操作哪一个库') -
IP:你要访问的数据库所在的电脑的IP地址,本机 localhost 或者 127.0.0.1 -
用户名:phpstudy 默认是 root -
密码: phpstudy 默认是 root -
database:选择一个你要操作的库 -
返回值:一个连接信息 -
$link = mysqli_connect('localhost','root','root','student');
print_r($link); 执行结果?? mysqli Object ( [affected_rows] => 0 [client_info] => mysqlnd 5.0.10 - 20111026 - $Id: c85105d7c6f7d70d609bb4c000257868a40840ab $ [client_version] => 50010 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 0 [host_info] => localhost via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.5.53 [server_version] => 50553 [stat] => Uptime: 12010 Threads: 2 Questions: 54 Slow queries: 0 Opens: 85 Flush tables: 1 Open tables: 3 Queries per second avg: 0.004 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 3 [warning_count] => 0 )
2.执行sql语句操作数据库了
-
sql语句是操作 MySQL 数据库的唯一方法(增删改查都是使用一个方法,只是不同的sql语句) -
简单的sql语句:'SELECT * FROM `表名`',查询数据库所有数据 -
语法:$res = mysqli_query(数据库连接信息,要执行的sql语句) -
返回值:sql语句的执行结果 -
$link = mysqli_connect('localhost','root','root','student');
$sql = 'SELECT * FROM`student`';
$res = mysqli_query($link,$sql);
print_r($res); 执行结果?? mysqli_result Object ( [current_field] => 0 [field_count] => 6 [lengths] => [num_rows] => 1024 [type] => 0 )
3.解析查询结果
-
注意:只有查询的sql语句需要解析(增删改不需要解析) -
语法:$data = mysqli_fetch_all(要解析的数据,解析的数据格式) -
要解析的数据,mysqli_query 的返回值 -
解析的数据格式,MYSQLI_ASSOC,解析成关联型数组 -
header('content-type: text/html;charset=utf-8;');
$link = mysqli_connect('localhost','root','root','student');
// print_r($link);
$sql = 'SELECT * FROM`student`';
$res = mysqli_query($link,$sql);
print_r($res);
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
//print_r($data);
echo json_encode($data); -
4.php的json格式
-
php的数据格式转换成json格式字符串 -
json_encode(php数据格式) -
-
json格式字符串转换成php的数据格式 -
json_decode(json格式字符串)
$arr =["hello" =>"world","name" =>"Jack"];
print_r($arr);
$jsonStr = json_encode($arr);
echo '</br>';
echo $jsonStr;
执行结果??
Array ( [hello] => world [name] => Jack )
{"hello":"world","name":"Jack"}
5.sql语句
-
操作MySQL 数据库的唯一方法 -
书写sql语句的规范: -
-
关键字建议大写 'SELECT' -
字段名 和 表名 建议用反引号包裹 '`student`'
-
5.1.查询所有
//查询数据库流程
//查询所有
$sql = 'SELECT * FROM `student`';
//1.建立连接
$link = mysqli_connect('127.0.0.1','root','root','student');
//2.执行sql语句
$res = mysqli_query($link,$sql);
//3.解析结果(因为是查询)
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
echo json_encode($data);
5.2.查询所有数据,但是只要几个字段
SELECT 字段1,字段2,...FROM `表`
//查询所有数据,但是只要几个字段
$sql = 'SELECT `name`,`age` FROM `student`';
$link = mysqli_connect('127.0.0.1','root','root','student');
//2.执行sql语句
$res = mysqli_query($link,$sql);
//3.解析结果(因为是查询)
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
echo json_encode($data);
5.3.WHERE关键字
按照条件查询
$sql = 'SELECT * FROM `student` WHERE `age`=28';
$sql = 'SELECT `score`,`age` FROM `student` WHERE `score`>90 AND `age`>25';
OR关键字
SELECT * FROM `student` WHERE 条件1 OR 条件2
LIMIT分页查询
SELECT * FROM `student` LIMIT 开始索引,多少个
ORDER BY 排序
SELECT * FROM `student` ORDER BY `字段` DESC //降序
SELECT * FROM `student` ORDER BY `字段` ASC //升序
LIKE % 模糊查询
SELECT * FROM `student` WHERE `name` LIKE '三%' //必须是三xxx
SELECT * FROM `student` WHERE `name` LIKE '%三' //必须是xxx三
SELECT * FROM `student` WHERE `name` LIKE '%三%' //包含三即可
LIKE _ 模糊查询
一个_ 只能表示一位
SELECT * `studnet` WHERE `name` LIKE '_三_' //必须是x三x(三位)
SELECT * `studnet` WHERE `name` LIKE '__三' //必须是x三(三位)
SELECT * `studnet` WHERE `name` LIKE '三_' //必须是三x(两位)
聚合函数
在查询的时候直接计算出一些内容
count() 统计数字
SELECT count(*) 别名 FROM `student`
"别名":"1024"
SELECT count(*) c FROM `student`
"c":"1024"
avg() 求平均值
$sql = SELECT avg(哪一个字段) 别名 FROM `student`
$sql = SELECT avg('score') c FROM `student`
max() 最大值
min() 最小值
$sql = SELECT max(哪一个字段) 别名 FROM `student`
$sql = SELECT min(哪一个字段) 别名 FROM `student`
综合
$sql = SELECT count(*) c, min(`score`) min, avg(`score`) a, max(`score`) max FROM `student`;
6.增删改的sql语句,插入的sql语句
6.1.按照字段全部插入
INSERT INTO student VALUES(按字段顺序书写,如按表里的顺序从左开始:id,name,age,gender,class,score)
$sql = 'INSERT INTO `student` VALUES(1025,'郭翔',18,'男')';
在插入的时候,主键可以不写,写一个null(主键:id)
6.2.选取字段插入
$sql = 'INSERT INTO `student` (`字段1`,`字段2`...) VALUES(NULL,'郭翔'...)';
注:前后括号的内容需要配上套
6.6.3.删除的语句
DELETE FROM student WHERE 条件
$sql = 'DELETE FROM `student` WHERE `id`=1023';
//将id为1023的删除掉
6.4.修改的sql语句
修改一条数据
UPDATE `student` SET 要修改的字段=要修改的值 WHERE 条件
$sql = 'UPDATE `student` SET `gender`="女" WHERE `id`>1024';
三、浏览器与后端交互
form标签,一个表单标签
有自动提交功能
action:提交到哪一个地址(哪一个php文件)
button 标签对:等价于submit按钮,点击的时候会自动提交
input
form表单的自动提交
只会提交有name属性的表单
name的值作为key
=>表单的value作为value
php接收前端发来的内容
使用前端发来的内容去数据库查询
返回结果给前端,登录成功,登录失败
<?php
// print_r($_GET);
// $username = $_GET['username'];
// $password = $_GET['password'];
$link = mysqli_connect('localhost','root','root','student');
$sql = "SELECT count(*) c FROM `demo1` WHERE `username`='guo' AND `password`='123'";
$res = mysqli_query($link,$sql);
//只要这里上面不得到false或者 不报错,就表示登录成功了
//只能表示你执行sql语句成功了,终于是否针对查询到了数据了,得解析看着
//方案1:结果解析完毕,查看的关联型数组的length
// $data = mysql_fetch_all($res,MYSQLI_ASSOC);
//通过数组的length决定是否登录成功
//语法:count(数组),返回值:这个数组的length
//print_r(count($data));
//方案2:修改sql语句,只要能查到数据,表示成功
//解析结果,直接能得到一个关联型数组,里面只有一个数据c
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
print_r($data);
?>
<?php
// print_r($_GET);
$username = $_GET['username'];
$password = $_GET['password'];
header('content-type:text/html;charset=utf-8;');
$link = mysqli_connect('localhost','root','root','student');
$sql = "SELECT * FROM `demo1` WHERE `username`='$username' AND `password`='$password'";
$res = mysqli_query($link,$sql);
//只要这里上面不得到false或者 不报错,就表示登录成功了
//只能表示你执行sql语句成功了,终于是否针对查询到了数据了,得解析看着
//方案1:结果解析完毕,查看的关联型数组的length
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
//通过数组的length决定是否登录成功
//语法:count(数组),返回值:这个数组的length
//print_r(count($data));
//方案2:修改sql语句,只要能查到数据,表示成功
//解析结果,直接能得到一个关联型数组,里面只有一个数据c
// $data = mysqli_fetch_all($res,MYSQLI_ASSOC);
// print_r($data);
//3.返回结果给前端,登录成功,登录失败
if(count($data)){
//表示有数据,登录成功
//暂时使用php操作一下浏览器
//告诉浏览器,把你的地址栏写成home.html
header('location:./home.html');
} else{
echo '用户名密码错误!';
echo '<button><a href="./P239 简单的登录案例.html">返回登录页</a></button>';
}
|