1、isset()、unset()、empty()区别?
答:是否存在 isset() 删除 unset() 是否为空empty()
2、单、双引号区别?
答:1⃣️对变量的解析不同:双引号可以解析变量,单引号对变量不解析原样输出; 2⃣️解析的速度不同:单引号不需要考虑变量的解析,速度比双引号快;
3、$_GET
与$_POST
区别?
答:1⃣️大小:get为2K post默认8M 2⃣️方式:get通过http Post往往通过表单 3⃣️安全:get明文传输 Post较安全 4⃣️地址:get通过url Post通过请求头
延伸:$_REQUEST
什么用途?
答:可接收两者的
4、echo、print、print_r的区别
答:1⃣️echo :是一个语言结构,输出一个或者多个字符串 2⃣️Print():是一个语言结构,不是一个函数,因此可以不使用括号括起来它的参数列表,输出的是一个字符串 3⃣️Print_r():是一个函数,打印变量的基本信息
5、Include、require、include_once、require_once的区别。
答:1⃣️对于错误的处理级别不同: include遇到错误时(引用的文件不存在),PHP只是报错,但程序会继续运行下去。 require遇到错误时,直接报错并停止运行程序。 2⃣️程序的处理不同 require相当于预处理,即它是在程序运行之前就被执行的。所以它是不可以用在控制语句中的,如if中。 include相当于函数,它是在程序运行时执行的。所以它可以用在控制语句中
6、strlen( s t r ) 、 m b s t r l e n ( str)、mb_strlen( str)、mbstrlen(str)区别?
答:在strlen($str)计算时,对待一个UTF8的中文字符是3个长度;mb_strlen($str)选定内码为UTF8,则会将一个中文字符当作长度1来计算;mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll
7、文件操作相关:
file_get_contents(文件名):获取文件内容 file_put_contents(文件名,写入的内容,FILE_APPEND):写入,参数FILE_APPEND为追加
8、常量的定义:define('PI',3.14)
9、常见魔术常量:
1⃣️__FILE__:当前运行的文件路径,包含该文件名。 2⃣️__DIR__:当前运行的文件路径,不包含该文件名
常用超全局变量:
$_GET:收集get方式提交的数据或者url中的数据 $_POST:收集提交 method="post" 的 HTML 表单后的表单数据 $_REQUEST:用于收集 HTML 表单提交的数据,get、post提交的均可获取 $_FILES:获取上传来的文件 $_SESSION:获取session数据 $_COOKIE:获取cookie数据 $GLOBALS:存储了所有全局变量,变量的名字就是数组的键 $_SERVER:保存关于报头、路径和脚本位置的信息
10、时间相关的操作:
time():当前时间的时间戳 date("Y-m-d H:i:s") 当前日期 strtotime("1970-1-2") 将时间转化为时间戳
11、session和cookie的区别
`答:- session可以借助cookie实现状态维持,也可以不依赖cookie(URL重写)
区别 | cookie | session |
---|---|---|
存储位置 | 浏览器 | 服务器 |
浏览器携带的数据量 | 多 | 少(只携带session-id) |
存储的数据类型 | 只能是字符串 | 任意类型 |
安全性 | 较低 | 较高 |
默认的有效路径 | 当前路径及其子路径 | 整站有效 |
数据的传输量 | 有限制4K,不能超过20个 | 无限制 |
12、cookie与session相关函数的使用:
设置cookie:setcookie('a',1,时间)
获取cookie:$_COOKIE['a']
设置session:
session_start(); $_SESSION["名称"] = 值;
13、数组相关:
创建:数组的创建 array()或者 []
遍历:foreach($arr as $k=>$v){}
1、数据的增删改查需要掌握,即:insert,delete,update,select语句
例子:
查: select * from users where age>18 /and name='aa'
增: insert into users(name,age) values('aa',18)
改: update users set age=19 where id=1
删: delete from users where id=2
2、常见的函数:
count()、max()、min()、avg()
例子:
count(*) 统计个数
select count(*) from users
max/min 最大最小
select max(age) from users
avg()平均值
select avg(age) from users
3、关于排序
升序/降序:order by id asc/desc
4、分页:
limit 5,10 从索引5开始,取10条
$page
:代表当前页
$pageSize
:每页显示的数量
这种分页方式常用:
limit ($page-1)*$pageSize,$pageSize
5、复杂点的SQL(能理解更好,非重点,若不能理解需要记住关键词)
内联接:inner join
左联接:left join(以左表为准 没有默认为空)
右联接:right join(以右表为准 没有默认为空)
例子:
select * from a,b where a.id=b.id
select * from a inner join b on a.id=b.id
select * from a left join b on a.id=b.id
select * from a right join b on a.id=b.id
!需要掌握
1、连接数据库
mysqli_connect("localhost","root","root","mybase")
2、设置编码
mysqli_set_charset($conn,"utf8")
3.组件sql语句
$sql = ''
4.执行语句得到结果集
$result = mysqli_query($conn,$sql)
5.循环结果集拿出每一条数据存到数组
while($arr = mysqli_fetch_array($result,MYSQL_ASSOC)){ $res[] = $arr; } print_r($res)
6.关闭数据库连接
mysqli_close($conn);
7、解析结果集的三种方式:
mysql_fetch_row():返回索引数组
mysql_fetch_assoc():返回关联数组。
mysql_fetch_array():返回混合数组。
1、使用ajax发送数据的步骤
第一步:创建异步对象
var xhr = new XMLHttpRequest();
第二步:设置 请求行 open(请求方式,请求url):
// get请求如果有参数就需要在url后面拼接参数,
// post如果有参数,就在请求体中传递 xhr.open("get","validate.php?username="+name)
xhr.open("post","validate.php");
第三步:设置请求(GET方式忽略此步骤)头:setRequestHeader()
// 1.get不需要设置
// 2.post需要设置请求头:Content-Type:application/x-www-form-urlencoded
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
第四步:设置请求体 send()
// 1.get的参数在url拼接了,所以不需要在这个函数中设置
// 2.post的参数在这个函数中设置(如果有参数)
xhr.send(null) xhr.send("username="+name);
第五步:让异步对象接收服务器的响应数据
// 一个成功的响应有两个条件:1.服务器成功响应了 2.异步对象的响应状态为4(数据解析完毕可以使用了)
xhr.onreadystatechange = function(){ if(xhr.status == 200 && xhr.readyState == 4){ console.log(xhr.responseText);}
ajax-get方式请求案例:
var xhr = new XMLHttpRequest();
xhr.open("get","validate.php?username="+name);
xhr.send(null);
xhr.onreadystatechange = function(){
if(xhr.status == 200 && xhr.readyState == 4){ console.log(xhr.responseText); document.querySelector(".showmsg").innerHTML = xhr.responseText;;
}
}
ajax-post方式请求案例:
var xhr = new XMLHttpRequest();
xhr.open("post","validate.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("username="+name);
xhr.onreadystatechange = function(){
// 判断服务器是否响应,判断异步对象的响应状态
if(xhr.status == 200 && xhr.readyState == 4){
document.querySelector(".showmsg").innerHTML = xhr.responseText;
}
}
$.ajax({
type:"get",// get或者post
url:"abc.php",// 请求的url地址
data:{},//请求的参数
dataType:"json",//json写了jq会帮我们转换成数组或者对象 他已经用JSON.parse弄好了
timeout:3000,//3秒后提示错误
beforeSend:function(){
// 发送之前就会进入这个函数
// return false 这个ajax就停止了不会发 如果没有return false 就会继续
},
success:function(data){ // 成功拿到结果放到这个函数 data就是拿到的结果
},
error:function(){//失败的函数
},
complete:function(){//不管成功还是失败 都会进这个函数
}
})
// 常用
$.ajax({
type:"get",
url:"",
data:{},
dataType:"json",
success:function(data){
}
})
$.ajax() 都可以发
$.post(url,data,success,datatype):本质上只能发送post请求
$.get(url,data,success,datatype):本质上只能发送get请求
1、什么是跨域?
答:协议、域名、端口只要任何一个不一样 就是跨域。
2、跨域的情况下使用ajax请求会报什么错?
答:No ‘Access-Control-Allow-Origin’ header
3、如何解决跨域问题?
答:1⃣️、在服务器设置header允许跨域
header(“Access-Control-Allow-Origin:*”);//允许所有人跨域访问
2⃣️、使用jsonp,jsonp只能发get请求
4、什么是jsonp?
答:1⃣️前端:
1.创建script 的src 发送请求到后台:把函数的名字传过去
2⃣️. 提前把对应的函数写好
后台:
1)获取要的数据
2)把前端传来的函数名拼接成 函数名(数据) 返回即可,比如 test(数据)