PHP学习笔记

142 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

PHP

一、php操作数据库

1、php连接数据库

$mysql=new mysqli(服务器域名,用户名,密码,数据库名称,端口号);
eg:$mysql=new mysqli('localhost','root','','wuif2002',3306);

2、检测数据库是否连接成功

if($mysql->connect_error){
    echo "数据库连接失败".$mysql->connect_error;
    exit;
}
echo "数据库连接成功";

connect_error:返回连接错误的错误描述。

exit:终止代码,退出当前脚本。

3、执行sql语句

//$sql="select * from info"
$sql="delete from info where id=4"
$mysql->query($sql); //向服务器发送sql语句

4、执行查询的sql语句

(1)查询结果集中的第一条

$result=$mysql->query($sql)->fetch_assoc();  //关联数组

(2)查询结果集中的全部内容

$result=$mysql->query($sql)->fetch_all(MYSQL_ASSOC); //二维数组 索引数组套关联数组

5、影响的行数

$mysql->affected_rows;  //返回执行语句的影响行数

二、汉字乱码

1、设置数据库的查询字符集

$mysql->query("set names utf8");

2、设置浏览器解析html文件中的编码

header('Content-type:text/html;charset=utf8');

3.header()函数:

  1. 设置文件类型与编码格式

    header('Content-type:text/html;charset=utf8');
    
  2. 跳转网页

    header("location:admin/login");
    

三、文件引入

include "./index.php";
include "./index.html";

四、php文件接收数据的方式

1、get方式

(1)通过地址栏传输 delete.php?id=10``insert.php?name='张三'&age=20

(2)通过$GET接收数据。数据格式为关联数组

五、数组

1、索引数组

(1)创建索引数组的方法: 自动分配 ID 键(ID 键总是从 0 开始):

$cars=array("Volvo","BMW","Toyota");

人工分配 ID 键 :

$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";

(2)访问:获取数组的长度 - count() 函数

count() 函数用于返回数组的长度(元素的数量)

$arr = array(1,32,4,56);
echo count($arr);

(3)遍历

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
​
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>

2、关联数组

  1. 定义: 关联数组是使用您分配给数组的指定的键的数组 。

  2. 创建数组:

    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    或
    $age['Peter']="35";
    $age['Ben']="37";
    $age['Joe']="43";
    
  3. 遍历关联数组

    <?php
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    ​
    foreach($age as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    }
    ?>
    

3.数组排序函数

函数描述
sort()对数组进行升序排列
rsort()对数组进行降序排列
asort()根据关联数组的值,对数组进行升序排列
ksort()根据关联数组的键,对数组进行升序排列
arsort()根据关联数组的值,对数组进行降序排列
krsort()根据关联数组的键,对数组进行降序排列

六、可编辑表格

1.数据渲染:

(1).查询数库中的所有数据

(2).数据渲染 HTML页面 for循环 数据遍历 HTML与PHP混排

2.添加:

(1).表单收集数据 action method =“post” name

(2).接收数据 $_post

(3).添加到数据库中:链接数据库,$SQL insert 执行SQL语句 ,提示

3.删除:

(1).删除按钮,跳转删除的PHP文件,利用get方式拼接id

(2).接收id $_GET

(3).删除数据库中的数据:链接数据库,$SQL delete 执行SQL语句 ,提示

4.修改:

(1).查看按钮,跳转查看的PHP文件,利用get方式拼接id

(2).查询本条数据,按照表单方式渲染

(3).修改数据

(4).表单提交 action method post name

隐藏域id:

<input type="hidden" name="id" value="<?php echo $result['goods_id']?>" >

(5).接收数据 $_post

(6).修改数据库中的数据:链接数据库,$SQL updata 执行SQL语句 ,提示

七、ajax无刷新可编辑表格

1.数据渲染:

(1).文件:html布局,js:ajax请求,数据渲染,PHP:请求数据可中的数据

(2).js文件:

  • 发送ajax请求,响应到数据,字符串-》数组 JSON.parse()
  • 数据渲染的函数render()

(3).PHP文件:

  • 连接数据库,创建SQL,执行查询功能
  • 数据传送到前台:PHP给前台传送数据只能用echo输出一次
echo json_encode($result);

2.查询数据:

(1).html页面:表单

(2).js文件中:

  • 按钮点击,屏蔽submit按钮的默认行为,获取表单的值
  • 发送ajax请求,有条件的查询数据,get方式,查询字符串querystudent.php?name=张三,sex=男;
  • name=“”,sex=“” es6给参数添加默认值

(3).PHP文件中

  • 获取数据,$_GET
  • 修改SQL语句,模糊查询:like
  • empty()判断变量的值是否为空

3.删除数据:

(1).html页面:删除按钮

(2).js文件:

  • 按钮点击事件,事件委派(动态创建),e.target nodename id
  • ajax请求 get 查询字符串 id
  • 提示, alert,节点中移出元素的方法

(3).php文件:

  • 获取数据,$_GET
  • 创建SQL,执行, success fail

4.添加数据:

(1).html页面:

  • form表单,屏蔽,name

(2).js文件:

  • 按钮点击事件,获取数据,改变格式
  • 发送ajax请求,post
  • 提示,成功,向页面中添加一条数据

(3).php文件:

  • 获取数据,$_post
  • 创建SQL,执行,success fail

七、ajax

1.概念

(1)含义:

异步的JavaScript与XML,在不刷新网页的情况下,局部更新数据。(不进行页面跳转)

(2)原理:

在客户端与服务器之间添加了ajax中间层,发送数据与接收数据

(3)核心对象:xmlhttprequest

let ajax=new XMLHttpRequest();  //1.实例化对象
ajax.open("get","demo.php",true); //2.打开请求: 方式,路径,是否异步  
ajax.send(null); //3.发送请求 
ajax.onreadystatechange=function(){  //4.添加异步监听事件
if(ajax.readyState==4 && ajax.status==200){  //连接服务器成功,服务器响应成功
console.log(ajax.response);  //6.服务器响应的内容
 }
}

2.实现:jQuery

(1).引入jQuery

$.ajax({
​
url:"insert.php"    //发送php文件"type":"post";    //方式data:"name=张三&age=18"// 数据success:function(res){   //成功时执行回调函数//res   返回信息
​
}
})

八、PHP中数据交换格式(发给js) json

1.json_encode()

将数据转换为字符串,发给前台时候使用

九.

1.$_SERVER保存服务器的相关信息

$_SERVER['REQUETS_METHOD'] 获取当前页面的请求方式 get

2.h5表单属性

pattern="[a-z]{3,5}" 表单数据进行正则验证

3.md5()数据库加密

4.count($arr) 计算数组的长度

5.substr(string,start,end) 字符串的截取

6.$mysql->close() 关闭数据库

7.is_array($arr) 判断一个变量是否是数组,返回值为true或false

8.is_string($str)判断一个变量是否是字符串

9.isset(变量) 检测变量是否存在,存在返回true,不存在返回false

10.unser(变量) 销毁变量

11.unlink(相对路径) 删除图片

十:图片上传

1.form标签中规定资源上传类型 enctype="multipart/form-data"

2.PHP文件中,接收资源$_FILES

3.数据解析:

'name' => string '同步与异步.png'  (length=19)
'type' =>string 'image/png' (length=9)
'tmp_name' =>string 'D:\wamp\wamp\php6EA6.tmp' (length=28)  //临时路径
'error' =>int 0   //0后台能接收到
'size' =>int 39893

4.思路:

$file['tmp_name'] =>upload/20200428/ 时间戳.随机数.类型
    1.创建日期的文件夹
    2.设置文件名   时间戳.随机数.类型
    3.移动文件

5.代码

  • date("Ymd") //获取年月日时分秒,格式化时间戳
  • is_dir(文件夹) 判断文件夹是否存在
  • mkdir("../upload/".$datedir) 创建文件夹
  • time() 时间戳
  • mt_rand(0,999) 获取随机数
  • explode("/",$file['type']) 将字符串按照表示散打为数组
  • move_uploaded_file(临时路径,移动路径) 移动文件 临时路径 移动到服务器上的路径 返回值是true或false