【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识
前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP、MySQL【语法基础】。项目github地址:https://github.com/66Web/php_book_store,欢迎Star。
一、PHP基础语法
- 一个PHP程序混合代码: html + css + js + php
- PHP标记:XML标记风格
<?php
echo "Hello world";
?> 输出语句:echo语句,每条语句后都需要加分号“;”结束
<?php
echo "欢迎","学习PHP"
?>注释语句
① /* 开始 多行注释
…… */结束
② // 单行注释
③ # 单行注释变量-命名与赋值:
变量名必须以‘$’符号开头
$bookname = 'PHP程序设计'
变量名的第一个字符必须是字母或下划线,后面可以是字母、数字或者下划线组合
变量名严格区分大小写,如果两个变量只是大小写不同,被视为两个变量
通常命名变量、赋值一起进行
$_price = 36
变量-数据类型:PHP支持8种数据类型,包括——4种标量类型、2种复合类型、2种特殊类型
数据类型转换:自动转换 VS 强制转换
" + ":会将字符转换成数值
" . ":会将数字转换成字符
使用单引号:程序不会判断字符串中是否含有变量,会将全部内容当做字符串输出
使用双引号:会首先判断字符串中是否含有变量,如果有变量会直接输出变量的值
PHP转义字符
\" 双引号 \\ 反斜杠 \n 换行
\r 回车 \t 制表符 \$ 美元符号
\x 十六进位字符常量
系统预定义常量
PHP_VERSION PHP程序的版本
自定义常量:通过define()函数定义,不能通过赋值语句赋值
① 常量的值只能是标量
<标量类型是数据结构种最基本的单元, 同一时刻只能存储一个数据>
② 常量前面没有 $ 符号 <?php
define("COPYRIGHT", "Copyright © 2011, www.bvtc.com.cn");
echo COPYRIGHT;
?>
算术运算符:7个
+ 加法运算符 - 减法运算符 * 乘法运算符
/ 除法运算符 % 取余数运算符 ++ 自加运算符
-- 自减运算符 echo $init_a ++;字符串运算符
. :将两个字符串连接起来保存到一个新的字符串中
<?php
$str_var1 = "城市,";
$str_var2 = "让生活更美好!";
echo $str_var1 . $str_var2; //实现字符串的连接 “城市,让生活更美好!”
?>赋值运算符
= : “被赋值为”或“被设置为”,不是等于
复合赋值运算符:对一个变量进行运算,然后将运算结果赋值给原来的变量
+= -= *= /= %= . = (将左边的字符串连接到右边)
$a .= $b => $a = $a . $b
位运算符:将一个整型变量当做一系列的位(bit)来处理
& 与 | 或 ^ 异或 << 左移 >> 右移 ~ 取反
比较运算符:通过比较两个数据的大小来返回真值或假值(通常用在 条件判断 和 循环处理中)
< 小于 > 大于 == 等于 === 恒等于(值与数据类型) <= 小于等于 >= 大于等于 != 不等 !== 不等于
逻辑运算符
&& 与 || 或 ! 非 xor 异或(一个为真时返回真;两个一样时,为假)
三元运算符
? : 与if条件语句作用相同
其它运算符
$ 变量定义 & 变量地址 @ 屏蔽错误信息 → 引用对象方法或属性
- 条件结构:if语句、switch语句
- 循环结构:while语句、do-while循环、for循环、foreach
- 函数-内置函数:工具函数、数学函数
- time():返回当前系统时间,以秒s为单位的整数
- die() 和 exit():指向同一个函数,使程序终止,die函数没有返回值
<?php
$var = "图书商城"
echo $var;
die("程序终止"); //图书商城程序终止
echo "该语句不会被执行";
?> empty():用于检查变量是否为0 或者 空值,如为0 或 空值 返回true, 否则false
is_bool():用于检测某变量是否是布尔值
abs():返回给定数值表达式的绝对值
<?php
echo abs(-1); //1
?>ceil():上取整,返回大于参数的最小的整数
<?php
echo ceil(1.1); //2
echo ceil(-1.1); //-1
?>floor():下取整,返回小于参数的最大的整数
<?php
echo floor(1.1); //1
echo floor(-1.1); //-2
?>round():返回四舍五入的结果数
min():返回该数组中的最小值
max():返回该数组中的最大值
rand():返回一个随机数
函数-自定义函数
通过function定义,直接使用函数名称进行函数的调用
<?php
funtion fun_add($int_n){
$int_sum = 0;
for($int_i = 1; $int_i <= $int_n; $int_i++){
$int_sum += $int_i;
}
echo $int_sum;
} fun_add(0);
?>参数传递-值传递
值传递:参数在调用函数前后不会发生改变,传递给函数的只是该参数的值
参数传递-引用传递
如果希望在函数内部修改参数值,且函数外部也能同时改变该参数的值,在传递的参数前面加 &
引用传递:将实参在内存的地址传递给相应的形参,形参的值发生改变的同时,实参也发生改变
<?php
function change(&number){
$number = $number * 2;
echo '函数内部 $number = ' . $number;
}
$number = 10 //实参
change(&number);
echo '<p>函数外部$number=' . $number . '</p>';
?>
数组
创建空数组,并添值 => 给数组元素赋值
$list = [];
$list[] = ["bid" => 101, "title" => "西游记"];
$list[] = ["bid" => 102 , "title" => "西游记前传"];
$list[] = ["bid" => 103, "title" => "西游记后转"];关联数组
$arr = ["eid" => 102, "ename" => "james"];
遍历数组 与js不同
//PHP $arr没有 .length属性 -> count($arr) for($i = 0; $i < count($arr2); $i++){
echo $arr2[$i];
}更简单的 foreach
foreach($arr2 as $k => $v){
echo "$k = $v<br/>"; //双引号直接把变量输出
}*注意: php5.3- => $arr1 = array(10, 20, 30);
php5.4+ => $arr2 = [10, 20, 30];
- PHP参数传递:3种方式
- 地址栏直接输入 <测试>
x.php -> $uname = $_REQUEST["uname"]; http://127.0.0.1/x.php?uname=tom&age=10
表单的name属性传递
x.php -> $uname = $_REQUST["uname"];
html ↓ <form action="x.php" method="post">
<input type="text" name="uname"/>
<input type="submit" value="ok" />
</form>通过js自动传递
<script>
location.href = "x.php?uname=tom"
</script>或 <a>的href跳转链接带参数传递
<a href="x.php?uname=tom"></a>
PHP表单处理
PHP中使用全局变量 $_GET 和 $_POST 来接收表单中提交的数据
在PHP程序的任何部分都可以调用这些全局变量
<form action=" " method="post" >
用户名:<input type="text" name="username" /><br/>
密码: <input type="text" name="paw"/></br>
<input type="submit" name="submit" value="提交"/>
<input type="reset" name="reset" value="重置"/>
</form>
通过 $_POST接收
<?php
echo "用户名:" . $POST['username']; //输出以POST方法提交的用户名 对应input框的name名(唯一)
echo "<br/>";
echo "密码为:" . $POST['paw']; //输出POST方法提交的密码
?>通过 $_GET接收
<?php
echo "用户名:" . $_GET['username']; //输出以GET方法提交的用户名 对应input框的name名(唯一)
echo "<br/>";
echo "密码为:" . $_GET['paw']; //输出GET方法提交的密码
?>
二、MySQL基础语法
- MySQL语句分类
- DDL 数据定义语句 CREATE / DROP
- DML 操作 INSERT / DELETE / UPDATE
- DQL 查询 SELECT
- DCL 控制 (GRANT / REVOKE) — 了解
- 进入mysql系统
mysql -uroot -p
DDL数据定义:CREATE 创建库 / 创建表 (2种)
① CREATE DATABASE 库名 CHARSET = UTF8; ② CREATE TABLE 表名(
列名1 列类型,
…… ……
);- DML操作数据:插入 - 更新 - 删除 (3种)
① INSERT INTO 表名 VALUES(值1, 值2, ……); ② UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2
WHERE 条件; ③ DELETE FROM 表名 WHERE 条件; DQL查询数据
① SELECT * FROM 表名; //查询所有列 ② SELECT 列名1, 列名2 …… FROM 表名
WHERE 条件; //多条件用 AND / OR / NOT
ORDER BY 列名称; //依照**排序,默认升序 降序后跟DESCDROP删除
删除指定库,指定表 很难恢复,一般不操作
- 数据库相关指令
LISE 库名; //进入数据库 SHOW DATABASES; //查看所有数据库
列数据类型
- int 整型 范围(-21亿~21亿)
- varchar(n) 字符串 n:几个字符(字母,数字,汉字,特殊字符)
phone (int放不下)
upwd 密码
jpg/pic 也是字符串类型 — “1.jpg” double(n,m) 浮点数(小数) double(10,2) -> 总长度10位,其中包括2位小数
datetime 日期时间 ‘1997-11-20’
decima(n,m) 高精度的浮点数 eg:Salary 工资
- 查询多张表的步骤
- Select 查找[别名.值]
- From 后给表起别名(一个字母) 空格
- WHERE 后面加两表间关系
SELECT e.eid, e.salary, d.dname
FROM dept d, emp e
WHERE e.did = d.did
查询可以嵌套
SELECT * FROM emp;
WHERE did = (SELECT did FROM dept WHERE dname='市场部');
//did 是两表联系 -> 查找条件,再查找精确查询
SELECT 列名 FROM 表名 WHERE did = 3;
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编码
- mysql utf8
CREATE DATABASE 库名 CHARSET = UTF8; //UTF8 支持全世界语言
SET NAMES GBK; //GBK 国家标准 html;css; js; php utf-8
<?php
header(*Content-Type: application/json; charset:utf-8");
$conn = mysqli_connect("127.0.0.1", "root", " ", "weixin", 3306);
mysqli_query($conn, "SET NAMES UTF8");
?>
- 习惯
- 指令大写,表名-自定义 小写 易区分,易修改
- 部署服务器,严格区分大小写 (如Linux)
- 使用安装MySQL和php都需要设置环境变量
Add to path
C:\xampp\mysql\bin
C:\xampp\apache\bin MySql必须加 主键自增长(速度快)
id INT PRIMARY KEY AUTO_INCREMENT
- MySql常用函数(6个)
- 当前日期和时间 now()
- 获取当前列中 最大值 max(列)
- 最小值 min(列)
- 所有数值和 sum(列)
- 所有数值平均值 avg(列)
- 记录个数 count(列)
SELECT max(sal), min(sal), avg(sal), sum(sal), count(sal)
FROM emp;
MySql完整创建用户表
mysql -uroot -p CREATE DATABASE weixin CHARSET=UTF8
USE weixin; #用户表
CREATE TABLE wxuser(
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(30),
upwd VARCHAR(30)
);
SET NAMES GBK; INSERT INTO wxuser VALUES(null, '17712345678', '123456');
SELECT * FROM wxuser;
三、Ajax基础知识
- Ajax接收服务器返回不同格式的数据(5种 请求主体类型描述头Content-Type)
text/plain 纯文本
text/html 文本与网页
application/javascript JS代码
application/json json格式数据
application/xml xml格式数据
txt 纯文本
//PHP中:修改响应头中数据格式
header("Content-Type:text/plain; charset:utf-8");
echo "hello";//ajax中:
xhr.responseText;//js文件时:
eval(xhr.respnseText)json 格式数据
//PHP中:修改响应头中数据格式
header("Content-Type:application/json; charset:utf-8");
echo "json_encode($row)";//ajax中
xhr.responseText;万能的Ajax封装函数$.ajax() —— jQuery中
$.ajax({
type: 'GET', //请求方式 GET/POST
url: 'data/login_do.php', //请求程序地址(必选)
data: {uname:u, upwd:p}, //提交给服务器参数, 一个key,一个value
success: function(data){ //响应完成并且成功调用函数
var rs = parseInt(data);
if(rs<0){
$("p.alert").html("用户名或密码错误")
}else{
$(".model").hide();
}
},
error: function(){ //响应完成并且失败调用函数
}
}); //beforeSend:fn —— 请求消息发送之前调用函数
//complet:fn —— 响应完成后无论成败调用函数
注:转载请注明出处
【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识的更多相关文章
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之知识点记录
前言:使用PHP和MySQL开发后台管理系统的过程中,发现有一些通用的[套路小Tip],这里集中记录一下.结合工作中ing的后台业务,我逐渐体会到:除了技术知识外.能使用户体验好的“使用流程设计”积累 ...
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之项目设计
前言:这个项目是毕设时候做的,我负责后台数据操作部分,已经很久了,这次回顾这部分,是为了复习PHP和MySQL的知识,正好现在在公司也负责的是后台管理系统的业务.第一篇[项目概况]附上毕业论文部分节选 ...
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之功能实现
前言:前一篇温习了网站开发需要掌握的基础知识,这一篇重点梳理一下各个功能模块的[详细设计与实现].项目github地址:https://github.com/66Web/php_book_store, ...
- JavaWeb网站后台开发记录手册
1.javaweb网站后台开发 1.封装DBTools类 1.注册数据库驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 2 ...
- PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类
一.程序设计 1.设计功能系统——数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理——原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的 ...
- 廖雪峰网站:学习python基础知识—list和tuple(二)
1.list """ Python内置的一种数据类型是列表:list. list是一种有序的集合,可以随时添加和删除其中的元素. """ c ...
- 前端开发之基础知识-HTML(二)
1.6 html链接 html链接 <a>标签可以在网页上定义一个链接地址,通过src属性定义跳转的地址,通过title属性定义鼠标悬停时弹出的提示文字框. <a href=&quo ...
- 1小时轻松上手springmvc,视频网站后台开发
由于最近半年一直在用springboot,但是也不能忘了本,于是把springmvc重新练了下,做了个前端传个表单,后台接收并显示的界面,该项目可以上传视频的URL,然后前端进行页面的播放,项目采用s ...
- 做php网站后台开发,在Linux系统上进行更好吗?
1. PHP是开源软件,它在bsd/linux/win下都有很好的正式版及孪生版.并非开发php就必须要在linux下进行.主机服务商们习惯性的把asp与php分为两个主机系列几进行销售.由于asp只 ...
随机推荐
- selenium3+python自动化50-环境搭建(firefox)【转载】
前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...
- 变量与指针 --- WalMart 寄存箱设计者不懂计算机
一.场景: 今天星期天,难得公司售后同事很给力,项目运行正常,无运维事务需要处理.于是满足堂客(湖南人称老婆)很久来的心愿 陪其逛街(这里要惭愧 检讨作为IT码农常常容易忽略身边的人.大声疾呼:“码农 ...
- Hydra--密码破解的神器
原来不止burpsuit.sqlmap是神器,还有Hydra. 虽久闻大名,却未曾使用,今天偶然用到,发现支持的服务那真是多,ftp.ssh.smtp.imap.http...,而且支持ssl 可以想 ...
- 【互动问答分享】第6期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第6期互动问答分享] Q1:spark streaming 可以不同数据流 join吗? Spark Streaming不同的数据流 ...
- Cookie和session的简单理解和应用
一.COOKIE 1.http协议建立连接后,无法保持状态:但实际情况,网站和服务器要进行通讯,需要“保持状态”,因此cookie应运而生:浏览器登陆web服务器后, Web 服务器产生包含有关用户的 ...
- HDU 2824.The Euler function-筛选法求欧拉函数
欧拉函数: φ(n)=n*(1-1/p1)(1-1/p2)....(1-1/pk),其中p1.p2…pk为n的所有素因子.比如:φ(12)=12*(1-1/2)(1-1/3)=4.可以用类似求素数的筛 ...
- 安装和破解Quartus Ⅱ 15.0
http://jingyan.baidu.com/article/b7001fe18d47fc0e7282dd91.html
- 洛谷 P3371 【模板】单源最短路径 【链式前向星+SPFA】
题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来M行每行包含三 ...
- ubuntu 下终端关于调试C++的命令
先确定安装了vim 和gcc (c语言)或者g++(c++) 如果没有安装可以在终端输入以下命令: sudo apt-get install build-essential sudo apt-get ...
- NOIP2010关押罪犯
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示 ...