前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP、MySQL【语法基础】。项目github地址:https://github.com/66Web/php_book_store,欢迎Star。


一、PHP基础语法

  • 一个PHP程序混合代码: html + css + js + php
  • PHP标记:XML标记风格

    1. <?php
    2. echo "Hello world";
    3. ?>
  • 输出语句:echo语句,每条语句后都需要加分号“;”结束

    1. <?php
    2. echo "欢迎""学习PHP"
    3. ?>
  • 注释语句

    1. /* 开始 多行注释
    2. …… */结束
    3. // 单行注释
    4. # 单行注释
  • 变量-命名与赋值:

  1. 变量名必须以‘$’符号开头

    1. $bookname = 'PHP程序设计'
  2. 变量名的第一个字符必须是字母或下划线,后面可以是字母、数字或者下划线组合

  3. 变量名严格区分大小写,如果两个变量只是大小写不同,被视为两个变量

  4. 通常命名变量、赋值一起进行

    1. $_price = 36
  • 变量-数据类型:PHP支持8种数据类型,包括——4种标量类型、2种复合类型、2种特殊类型

    数据类型转换:自动转换 VS 强制转换

  1. " + ":会将字符转换成数值

  2. .  ":会将数字转换成字符

  3. 使用单引号:程序不会判断字符串中是否含有变量,会将全部内容当做字符串输出

  4. 使用双引号:会首先判断字符串中是否含有变量,如果有变量会直接输出变量的值

  • PHP转义字符

    1. \" 双引号 \\ 反斜杠 \n 换行
    2. \r 回车 \t 制表符 \$ 美元符号
    3. \x 十六进位字符
  • 常量

  1. 系统预定义常量

    1. PHP_VERSION PHP程序的版本
  2. 自定义常量:通过define()函数定义,不能通过赋值语句赋值

    1. 常量的值只能是标量
    2. <标量类型是数据结构种最基本的单元, 同一时刻只能存储一个数据>
    3. 常量前面没有 $ 符号
    4.  
    5. <?php
    6. define("COPYRIGHT", "Copyright © 2011, www.bvtc.com.cn");
    7. echo COPYRIGHT;
    8. ?>
  • 算术运算符:7个  

    1. + 加法运算符 - 减法运算符 * 乘法运算符
    2. / 除法运算符 % 取余数运算符 ++ 自加运算符
    3. -- 自减运算符
    4.  
    5. echo $init_a ++;
  • 字符串运算符  

      :将两个字符串连接起来保存到一个新的字符串中

    1. <?php
    2. $str_var1 = "城市,"
    3. $str_var2 = "让生活更美好!"
    4. echo $str_var1 . $str_var2; //实现字符串的连接 “城市,让生活更美好!”
    5. ?>
  • 赋值运算符  

    =  :  “被赋值为”或“被设置为”,不是等于  

  • 复合赋值运算符:对一个变量进行运算,然后将运算结果赋值给原来的变量  

    +=     -=     *=      /=     %=     . =  (将左边的字符串连接到右边)

    1. $a .= $b => $a = $a . $b
  • 位运算符:将一个整型变量当做一系列的位(bit)来处理

    1. & | ^ 异或
    2.  
    3. << 左移 >> 右移 ~ 取反
  • 比较运算符:通过比较两个数据的大小来返回真值或假值(通常用在 条件判断 和  循环处理中)  

    1. < 小于 > 大于 == 等于 === 恒等于(值与数据类型)
    2.  
    3. <= 小于等于 >= 大于等于 != 不等 !== 不等于
  • 逻辑运算符  

    &&   与        ||    或       !   非        xor    异或(一个为真时返回真;两个一样时,为假)

  • 三元运算符  

    ?  :   与if条件语句作用相同

  • 其它运算符  

     $    变量定义       &    变量地址       @    屏蔽错误信息    →    引用对象方法或属性

  • 条件结构:if语句、switch语句
  • 循环结构:while语句、do-while循环、for循环、foreach
  • 函数-内置函数:工具函数、数学函数
  1. time():返回当前系统时间,以秒s为单位的整数
  2. die() 和 exit():指向同一个函数,使程序终止,die函数没有返回值
    1. <?php
    2. $var = "图书商城"
    3. echo $var;
    4. die("程序终止"); //图书商城程序终止
    5. echo "该语句不会被执行";
    6. ?>
  3. empty():用于检查变量是否为0 或者 空值,如为0 或 空值 返回true, 否则false

  4. is_bool():用于检测某变量是否是布尔值

  5. abs():返回给定数值表达式的绝对值

    1. <?php
    2. echo abs(-1); //1
    3. ?>
  6. ceil():上取整,返回大于参数的最小的整数

    1. <?php
    2. echo ceil(1.1); //2
    3. echo ceil(-1.1); //-1
    4. ?>
  7. floor():下取整,返回小于参数的最大的整数

    1. <?php
    2. echo floor(1.1); //1
    3. echo floor(-1.1); //-2
    4. ?>
  8. round():返回四舍五入的结果数

  9. min():返回该数组中的最小值

  10. max():返回该数组中的最大值

  11. rand():返回一个随机数

  • 函数-自定义函数 

  1. 通过function定义,直接使用函数名称进行函数的调用

    1. <?php
    2. funtion fun_add($int_n){
    3. $int_sum = 0;
    4. for($int_i = 1; $int_i <= $int_n; $int_i++){
    5. $int_sum += $int_i;
    6. }
    7. echo $int_sum;
    8. }
    9.  
    10. fun_add(0);
    11. ?>
  2. 参数传递-值传递 

    值传递:参数在调用函数前后不会发生改变,传递给函数的只是该参数的值

  3. 参数传递-引用传递

    如果希望在函数内部修改参数值,且函数外部也能同时改变该参数的值,在传递的参数前面加 &

    引用传递:将实参在内存的地址传递给相应的形参,形参的值发生改变的同时,实参也发生改变

    1. <?php
    2. function change(&number){
    3. $number = $number * 2;
    4. echo '函数内部 $number = ' . $number;
    5. }
    6. $number = 10 //实参
    7. change(&number);
    8. echo '<p>函数外部$number=' . $number . '</p>';
    9. ?>
  • 数组

  1. 创建空数组,并添值   => 给数组元素赋值

    1. $list = [];
    2. $list[] = ["bid" => 101, "title" => "西游记"];
    3. $list[] = ["bid" => 102 , "title" => "西游记前传"];
    4. $list[] = ["bid" => 103, "title" => "西游记后转"];
  2. 关联数组

    1. $arr = ["eid" => 102, "ename" => "james"];
  3. 遍历数组   与js不同

    1. //PHP $arr没有 .length属性 -> count($arr)
    2.  
    3. for($i = 0; $i < count($arr2); $i++){
    4. echo $arr2[$i];
    5. }

    更简单的  foreach

    1. foreach($arr2 as $k => $v){
    2. echo "$k = $v<br/>"; //双引号直接把变量输出
    3. }

    *注意:  php5.3-   =>   $arr1 = array(10, 20, 30);

                      php5.4+  =>   $arr2 = [10, 20, 30];

  • PHP参数传递:3种方式
  1. 地址栏直接输入 <测试>

    1. x.php -> $uname = $_REQUEST["uname"];
    2.  
    3. http://127.0.0.1/x.php?uname=tom&age=10
  2. 表单的name属性传递

    1. x.php -> $uname = $_REQUST["uname"];
    1. html
    2.  
    3. <form action="x.php" method="post">
    4. <input type="text" name="uname"/>
    5. <input type="submit" value="ok" />
    6. </form>
  3. 通过js自动传递

    1. <script>
    2. location.href = "x.php?uname=tom"
    3. </script>

    或 <a>的href跳转链接带参数传递

    1. <a href="x.php?uname=tom"></a>
  • PHP表单处理

    PHP中使用全局变量 $_GET 和 $_POST 来接收表单中提交的数据

    在PHP程序的任何部分都可以调用这些全局变量

    1. <form action=" " method="post" >
    2. 用户名:<input type="text" name="username" /><br/>
    3. 密码: <input type="text" name="paw"/></br>
    4. <input type="submit" name="submit" value="提交"/>
    5. <input type="reset" name="reset" value="重置"/>
    6. </form>

  1. 通过 $_POST接收

    1. <?php
    2. echo "用户名:" . $POST['username']; //输出以POST方法提交的用户名 对应input框的name名(唯一)
    3. echo "<br/>"
    4. echo "密码为:" . $POST['paw']; //输出POST方法提交的密码
    5. ?>
  2. 通过 $_GET接收

    1. <?php
    2. echo "用户名:" . $_GET['username']; //输出以GET方法提交的用户名 对应input框的name名(唯一)
    3. echo "<br/>"
    4. echo "密码为:" . $_GET['paw']; //输出GET方法提交的密码
    5. ?>

二、MySQL基础语法  

  • MySQL语句分类 
  1. DDL   数据定义语句   CREATE / DROP
  2. DML          操作          INSERT / DELETE / UPDATE
  3. DQL          查询          SELECT
  4. DCL          控制         (GRANT /  REVOKE) — 了解
  • 进入mysql系统

    1. mysql -uroot -p
  • DDL数据定义:CREATE  创建库 / 创建表 (2种)

    1. CREATE DATABASE 库名 CHARSET = UTF8;
    2.  
    3. CREATE TABLE 表名(
    4. 列名1 列类型,
    5. …… ……
    6. );
  • DML操作数据:插入 - 更新 - 删除 (3种)
    1. INSERT INTO 表名 VALUES(值1 2 ……);
    2.  
    3. UPDATE 表名 SET 1 = 新值1 2 = 新值2
    4. WHERE 条件;
    5.  
    6. DELETE FROM 表名 WHERE 条件;
  • DQL查询数据

    1. SELECT * FROM 表名; //查询所有列
    2.  
    3. SELECT 列名1 列名2 …… FROM 表名
    4. WHERE 条件; //多条件用 AND / OR / NOT
    5. ORDER BY 列名称; //依照**排序,默认升序 降序后跟DESC
  • DROP删除 

    删除指定库,指定表    很难恢复,一般不操作

  • 数据库相关指令

    1. LISE 库名; //进入数据库
    2.  
    3. SHOW DATABASES; //查看所有数据库
  • 列数据类型 

  1. int   整型     范围(-21亿~21亿)
  2. varchar(n)    字符串   n:几个字符(字母,数字,汉字,特殊字符)
    1. phone (int放不下)
    2. upwd 密码
    3. jpg/pic 也是字符串类型 1.jpg
  3. double(n,m)    浮点数(小数)   double(10,2) -> 总长度10位,其中包括2位小数

  4. datetime    日期时间   ‘1997-11-20’

  5. decima(n,m)   高精度的浮点数    eg:Salary   工资

  • 查询多张表的步骤
  1. Select    查找[别名.值]
  2. From      后给表起别名(一个字母)   空格
  3. WHERE    后面加两表间关系
    1. SELECT e.eid, e.salary, d.dname
    2. FROM dept d, emp e
    3. WHERE e.did = d.did
  • 查询可以嵌套

    1. SELECT * FROM emp;
    2. WHERE did = (SELECT did FROM dept WHERE dname='市场部');
    3. //did 是两表联系 -> 查找条件,再查找
  • 精确查询

    1. SELECT 列名 FROM 表名 WHERE did = 3;
    2. SELECT 列名 FROM 表名 WHERE name = '鸡蛋'
  • 模糊查询  

    SELECT    列名    FROM    表名    WHERE    列名    LIKE    '%关键字%';   包括关键字  

    '关键字%';  以关键字开头  

                                                                                                 '%关键字';  以关键字结尾

                                                                                                                -   匹配单个字符

  • 分页查询

    SELECT    列名   FROM   表名   LIMIT   起始行, 行数;

  • 同时更新不同条件的多条指令为相同数值

UPDATE    car    SET    tid = 2    WHERE    cid    in    (3,5,7,9); 

  • UTF-8编码
  1. mysql    utf8

    1. CREATE DATABASE 库名 CHARSET = UTF8; //UTF8 支持全世界语言
    2. SET NAMES GBK; //GBK 国家标准
  2. html;css;  js;  php     utf-8

    1. <?php
    2. header(*Content-Type: application/json; charset:utf-8");
    3. $conn = mysqli_connect("127.0.0.1", "root", " ", "weixin", 3306);
    4. mysqli_query($conn, "SET NAMES UTF8");
    5. ?>
  • 习惯
  1. 指令大写,表名-自定义   小写     易区分,易修改
  2. 部署服务器,严格区分大小写 (如Linux)
  • 使用安装MySQL和php都需要设置环境变量

    1. Add to path
    2. C:\xampp\mysql\bin
    3. C:\xampp\apache\bin
  • MySql必须加 主键自增长(速度快)  

    id     INT     PRIMARY      KEY     AUTO_INCREMENT

  • MySql常用函数(6个) 
  1. 当前日期和时间                       now()
  2. 获取当前列中        最大值        max(列)
  3. 最小值        min(列)
  4. 所有数值和           sum(列)
  5. 所有数值平均值    avg(列)
  6. 记录个数               count(列)
    1. SELECT max(sal), min(sal), avg(sal), sum(sal), count(sal)
    2. FROM emp;
  • MySql完整创建用户表

    1. mysql -uroot -p
    2.  
    3. CREATE DATABASE weixin CHARSET=UTF8
    4. USE weixin;
    5.  
    6. #用户表
    7. CREATE TABLE wxuser(
    8. uid INT PRIMARY KEY AUTO_INCREMENT,
    9. uname VARCHAR(30),
    10. upwd VARCHAR(30)
    11. );
    12. SET NAMES GBK;
    13.  
    14. INSERT INTO wxuser VALUES(null, '17712345678', '123456');
    15. SELECT * FROM wxuser;

三、Ajax基础知识  

  • Ajax接收服务器返回不同格式的数据(5种  请求主体类型描述头Content-Type)

    1. text/plain 纯文本
    2. text/html 文本与网页
    3. application/javascript JS代码
    4. application/json json格式数据
    5. application/xml xml格式数据
  1. txt  纯文本

    1. //PHP中:修改响应头中数据格式
    2. header("Content-Type:text/plain; charset:utf-8");
    3. echo "hello";
    1. //ajax中:
    2. xhr.responseText;
    1. //js文件时:
    2. eval(xhr.respnseText)  
  2. json 格式数据

    1. //PHP中:修改响应头中数据格式
    2. header("Content-Type:application/json; charset:utf-8");
    3. echo "json_encode($row)";
    1. //ajax中
    2. xhr.responseText;  
  3. 万能的Ajax封装函数$.ajax() —— jQuery中

    1. $.ajax({
    2. type: 'GET', //请求方式 GET/POST
    3. url: 'data/login_do.php', //请求程序地址(必选)
    4. data: {uname:u, upwd:p}, //提交给服务器参数, 一个key,一个value
    5. success: function(data){ //响应完成并且成功调用函数
    6. var rs = parseInt(data);
    7. if(rs<0){
    8. $("p.alert").html("用户名或密码错误")
    9. }else{
    10. $(".model").hide();
    11. }
    12. },
    13. error: function(){ //响应完成并且失败调用函数
    14. }
    15. });
    16.  
    17. //beforeSend:fn —— 请求消息发送之前调用函数
    18. //complet:fn —— 响应完成后无论成败调用函数

注:转载请注明出处

【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识的更多相关文章

  1. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之知识点记录

    前言:使用PHP和MySQL开发后台管理系统的过程中,发现有一些通用的[套路小Tip],这里集中记录一下.结合工作中ing的后台业务,我逐渐体会到:除了技术知识外.能使用户体验好的“使用流程设计”积累 ...

  2. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之项目设计

    前言:这个项目是毕设时候做的,我负责后台数据操作部分,已经很久了,这次回顾这部分,是为了复习PHP和MySQL的知识,正好现在在公司也负责的是后台管理系统的业务.第一篇[项目概况]附上毕业论文部分节选 ...

  3. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之功能实现

    前言:前一篇温习了网站开发需要掌握的基础知识,这一篇重点梳理一下各个功能模块的[详细设计与实现].项目github地址:https://github.com/66Web/php_book_store, ...

  4. JavaWeb网站后台开发记录手册

    1.javaweb网站后台开发 1.封装DBTools类 1.注册数据库驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 2 ...

  5. PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类

    一.程序设计 1.设计功能系统——数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理——原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的 ...

  6. 廖雪峰网站:学习python基础知识—list和tuple(二)

    1.list """ Python内置的一种数据类型是列表:list. list是一种有序的集合,可以随时添加和删除其中的元素. """ c ...

  7. 前端开发之基础知识-HTML(二)

    1.6 html链接 html链接 <a>标签可以在网页上定义一个链接地址,通过src属性定义跳转的地址,通过title属性定义鼠标悬停时弹出的提示文字框. <a href=&quo ...

  8. 1小时轻松上手springmvc,视频网站后台开发

    由于最近半年一直在用springboot,但是也不能忘了本,于是把springmvc重新练了下,做了个前端传个表单,后台接收并显示的界面,该项目可以上传视频的URL,然后前端进行页面的播放,项目采用s ...

  9. 做php网站后台开发,在Linux系统上进行更好吗?

    1. PHP是开源软件,它在bsd/linux/win下都有很好的正式版及孪生版.并非开发php就必须要在linux下进行.主机服务商们习惯性的把asp与php分为两个主机系列几进行销售.由于asp只 ...

随机推荐

  1. 【bzoj2561】最小生成树

    嗯……这题是一个网络流. 加入的边为u,v长度L 则所有长度大于L的边不能使得u,v连通 求个最小割即可.小于同理 两次最小割结果相加. #include<bits/stdc++.h> # ...

  2. git add 文档

    GIT-ADD(1) Git Manual GIT-ADD(1) NAME git-add - Add file contents to the index SYNOPSIS git add [-n] ...

  3. Android 网络url设置View背景图

    imgstr为url网络图片地址,topllay是要设置背景的控件: 方法1.Android Glide设置View背景图 Glide.with(this).load(imgStr).asBitmap ...

  4. 【转载】Synflood code

    ''' Syn flood program in python by Tequila/e credits to Silver Moon for base's of syn packets. r s s ...

  5. Codeforces 1023 C.Bracket Subsequence-STL(vector) (Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Fi)

    C. Bracket Subsequence ... 代码: 1 //C 2 #include<iostream> 3 #include<cstdio> 4 #include& ...

  6. HDU 2547 无剑无我(数学)

    #include<cstdio> #include<iostream> #include<cmath> int main() { double a,b,c,d,m; ...

  7. ( 转 ) 优秀REST风格 API的设计原则

    设计优秀的REST风格API非常困难!API是服务提供方和使用方之间的契约,打破该契约将会给服务端开发人员招来非常大的麻烦,这些麻烦来自于使用API的开发人员,因为对API的改动会导致他们的移动app ...

  8. centos 7 下发送邮件设置

    使用sendmail发邮件的配置 yum -y install sendmailservice sendmail start vim body.txttest mail from linux. mai ...

  9. 利用Java的反射与代理机制实现AOP

    在上一篇文章中,我们讲述了利用Java的反射机制中实现Spring中的IOC,在本文中,我们将更进一步,讲述用Java的反射和动态代理机制来实现Spring的AOP. 一.AOP概述 AOP(Aspe ...

  10. java前后端加密(转载)

    最近做一个项目的安全渗透测评,测评人员发来一份测试报告,报告明确提出不允许明文参数传输,因为数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的 ...