php mysql Ajax

103 阅读5分钟
MySQL基本内容
访问:2种
1、图形化界面方式(更简单更方便)- 傻瓜式操作
	要求:同时打开MySQL和Apache
	访问:127.0.0.1:端口号/phpmyadmin
	      localhost:端口号/phpmyadmin

	有的同学打不开

2、*****命令行方式:复杂很多,但是这样你才能学到真正的SQL语句
	如何进入数据库
		1、打开cmd
		2、输入cmd的命令,进入到d:/xammp/mysql/bin
		3、登录账号:mysql -uroot -p      千万不要加分号
		4、退出登录:exit;
		5、学习SQL语句:关系型数据库的SQL语句时通用的
1、数据库
				创建:CREATE DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET utf8;

				查看:SHOW DATABASES;

				切换:USE 数据库名称;
2、数据表:
				数据库的数据类型:
					数值:*Int - 整型
					      Float/Double - 浮点型
					      Decimal - 精确值

					字符串:CHAR - 长度固定
					       *VARCHAR - 长度可变的

					日期:DATE - YYYY/MM/DD
					      DATETIME - YYYY/MM/DD hh:mm:ss
					      TIMESTAMP - 时间戳(标识:唯一不重复 - id也可以)

				创建数据表:
					CREATE TABLE 表名(
						字段名 数据类型,
						...
					);

				举例:
					CREATE TABLE stu(
						id INT PRIMARY KEY AUTO_INCREMENT,
						name VARCHAR(30),
						pwd VARCHAR(6),
						email VARCHAR(36),
						vip VARCHAR(1)
					);


					主键约束:PRIMARY KEY - 不能重复
					主键自增:AUTO_INCREMENT - 每次自动+1
3、*****数据:4句以后非常常用的SQL语句
				增:INSERT INTO 表名 VALUES(字段值,...);
				  举例:INSERT INTO stu VALUES(0,"喻杭","123123","yh@qq.com","0"); - 注意增加时一定要和字段名一一对应

				删:DELETE FROM 表名 WHERE id=几; - 一旦删除就回不来了

				改:UPDATE 表名 SET 字段名=字段值,... WHERE id=几;
					举例:UPDATE stu SET name="袁诗杰",vip="0" WHERE id=9;

				查:3种语法
					1SELECT * FROM 表名; - 得到此表里面所有的数据
					2SELECT * FROM 表名 WHERE id=几; - 得到id=几的所有的数据
					3SELECT name,pwd FROM 表名; - 得到此表里面所有的名字和密码
1、PHP:最简单的一门语言:和javascript语法非常相似,但是做的事儿绝对不一样:js(特效) 后端语言(数据库交互)

火爆架构:LAMP php文件后缀名.php 1、*****如何运行php文件 打开apache,将你的项目/文件放到htdocs文件夹中,打开浏览器输入:127.0.0.1,打开你需要访问的文件

特殊:其实php文件也是支持前端代码和php代码的,以后我们上网的时候,看到网页的后缀.php,也不要惊讶

2、PHP语法基础: 1、输出方式: *1、echo(想要输出的内容); 或 echo 想要输出的内容; - 类似document.write输出在页面上 只能输出4种标准类型

	2var_dump(想要输出的内容); - 类似document.write输出在页面上,但是输出的非常详细,可以查看到数据类型是什么以及值是什么
		正是因为输出的太过详细了,以后不会用到太多,因为以后我们学习了ajax过后,会把后端放到页面上的所有东西都拿到前端去

2、变量和常量:
       *1、变量:值可以改变
	   语法:$变量名=值;
	   注意:使用时$也不能省略

	2、常量:一旦创建后,值不可以修改
	   语法:const 常量名=值;

3、数据类型:
	四种标准/基本/原始类型:
		整型:Int
		浮点型:Float/Doublue
		布尔:Boolean
	       *字符串:string - 有区别
			单引号 - 只能放入纯文本

			双引号 - 支持变量,类似于js中模板字符串
				 echo "我的名字叫{$name}今年{$age}岁";

	两种复合类型:
		Array - 数组
			创建:21、直接量:$arr=[值1,...]; - 索引数组
				2、内置函数:$arr=array(
						key=>value,
						...
					     )

			访问:$arr[下标/自定义下标];

			遍历:循环

		Object - 面向对象开发,我们不管
	
	两种特殊类型
		1、Resource - 资源类型,连接上数据库过后才会看到
		2null - 空,释放内存
				""    -  有,值为空
				null  -  不存在

4、运算符:几乎和js一致,唯独字符串拼接.,意味着php想要调用方法和属性绝对不可能使用.操作

5、分支:完全一样:switch...case... if...else... 三目

6、循环:完全一样:while  do...while  for

7、函数:完全一样:

8、API:理论上完全一样!但是操作却不同,不需要做任何学习和任何记忆,面向百度开发 - js有的,php也有,但是用法不同

2、全栈开发 1、前端->后端: 前端需要发起请求:目前来说,只有表单提交这一个请求是我们学过的,也还有ajax请求 1、表单提交:请求 注意: 1、input必须添加name属性,甚至有的人(radio/checkbox/option)可能需要添加value 2、form表单必须添加action="服务器端文件的路径"; 3、表单提交,只负责传输,不负责保存 4、method到底是get还是post,需要和后端进行沟通的 get - 跟安全性不挂钩的时候 - 搜索框 post - 跟安全性挂钩的时候

	后端需要接受住前端传来的请求消息(查询字符串部分):
		$_GET/POST/REQUEST["pwd"];
			
		REQUEST - 请求:能接住一切请求不管是get还是post

2、后端<->数据库:php自带操作mysql的API,只需要学4.5句话
1、创建和数据库的连接对象
		$conn=mysqli_connect("hostname","username","userpwd","dbname");
	 	举例:$conn=mysqli_connect("127.0.0.1","root","","h52203");
			hostname - 主机号:127.0.0.1
			username - root
			userpwd	 - 空的,不能不写,必须写为""
			dbname   - 数据库名称
1.5、设置传输过程中的中文编码
		mysqli_query($conn,"SET NAMES utf8");
2、创建SQL语句
		$sql="INSERT/DELETE/UPDATE/SELECT";
	
3、对数据库执行SQL语句
		$rs=mysqli_query($conn,$sql);
		//增删改:结果都是一个布尔值,true代表执行成功,false代表执行失败
		//查:问题:得到一个我们谁都不认识的结果集对象
		      解决:PHP提供了一套API帮我们把不认识的结果集变成认识的东西
				mysqli_fetch_row(不认识的结果集);//一次只会拿到一行数据,是一个索引数组
			       *mysqli_fetch_assoc(不认识的结果集);//一次只会拿到一行数据,是一个hash数组(对象)
				mysqli_fetch_array(不认识的结果集);//一次只会拿到一行数据,是一个既有索引又有自定义下标的数组

				固定套路:
					while(($row=mysqli_fetch_row/assoc/array($rs))!=null){
						$row拿到这一行数据,你要做什么操作?
					}
4、断开和数据库的连接
		mysqli_close($conn);
                    、概念:
同步交互:用户向服务器端发起请求直到服务器端进行响应的全过程,用户是不可以做其他事情的(等)
	典型:表单提交请求、网址请求 - 都属于同步请求

异步交互:用户向服务器端发起请求直到服务器端进行响应的全过程,用户是可以做其他事情的(不等)
	典型:ajax请求
2、ajax:asynchronous javascript and xml;直译:异步的javascript和xml - 前端技术(javascript中的一部分)
不严格的定义:页面不会完整刷新,只会导致局部发生改变
我们早就见过异步技术/异步代码了:
	1、定时器:定时器里面的内容再耗时也不回卡主后续代码 - 做特效
	2、ajax:目的:在不刷新页面的情况下和服务器端进行交互
3、如何使用:4步骤
1、创建ajax核心对象XMLHttpRequest;
	var xhr=new XMLHttpRequest();

2、建立和服务器端的连接
	xhr.open("GET/POST","xx.php");

3、向服务器端发送请求
	xhr.send(null);

	特殊:
1、GET请求:xhr.send()会失效,但是还不能省略,必须写为xhr.send(null),请求消息需要放到url?后面进行添加
			xhr.open("GET","xx.php?key=value&...");
			xhr.send(null);
2、POST请求:xhr.send()可用,但是必须在之前加上一句话设置请求头部
			xhr.open("POST","xx.php");
			xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			xhr.send("key=value&...");
4、绑定状态的监听事件
	xhr.onreadystatechange=()=>{
		if(xhr.readyState==4&&xhr.status==200){
			xhr.responseText;//得到服务器端响应的数据 - 就是php放在页面上的一切东西
			//难在你拿到了东西,你要干什么
		}
	}