mysql二手书交易平台_【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识...

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

一、PHP基础语法

一个PHP程序混合代码:html + css + js + php

PHP标记:XML标记风格

echo "Hello world";

?>

输出语句:echo语句,每条语句后都需要加分号“;”结束

echo "欢迎","学习PHP"

?>

注释语句

① /* 开始 多行注释

…… */结束

② // 单行注释

③ # 单行注释

变量-命名与赋值:

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

$bookname = 'PHP程序设计'

变量名的第一个字符必须是字母或下划线,后面可以是字母、数字或者下划线组合

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

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

$_price = 36

变量-数据类型:PHP支持8种数据类型,包括——4种标量类型、2种复合类型、2种特殊类型

eb377c75a7d0522bfa96cb2f15955147.png

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

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

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

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

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

PHP转义字符

\" 双引号 \\ 反斜杠 \n 换行

\r 回车 \t 制表符 \$ 美元符号

\x 十六进位字符

常量

系统预定义常量

PHP_VERSION PHP程序的版本

自定义常量:通过define()函数定义,不能通过赋值语句赋值

① 常量的值只能是标量

② 常量前面没有 $ 符号

define("COPYRIGHT", "Copyright © 2011, www.bvtc.com.cn");

echo COPYRIGHT;

?>

算术运算符:7个

+ 加法运算符 - 减法运算符 * 乘法运算符

/ 除法运算符 % 取余数运算符 ++ 自加运算符

-- 自减运算符

echo $init_a ++;

字符串运算符

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

$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函数没有返回值

$var = "图书商城"

echo $var;

die("程序终止"); //图书商城程序终止

echo "该语句不会被执行";

?>

empty():用于检查变量是否为0 或者 空值,如为0 或 空值 返回true, 否则false

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

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

echo abs(-1); //1

?>

ceil():上取整,返回大于参数的最小的整数

echo ceil(1.1); //2

echo ceil(-1.1); //-1

?>

floor():下取整,返回小于参数的最大的整数

echo floor(1.1); //1

echo floor(-1.1); //-2

?>

round():返回四舍五入的结果数

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

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

rand():返回一个随机数

函数-自定义函数

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

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);

?>

参数传递-值传递

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

参数传递-引用传递

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

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

function change(&number){

$number = $number * 2;

echo '函数内部 $number = ' . $number;

}

$number = 10 //实参

change(&number);

echo '

函数外部$number=' . $number . '

';

?>

数组

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

$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
"; //双引号直接把变量输出

}

*注意:  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 ↓

通过js自动传递

location.href = "x.php?uname=tom"

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

PHP表单处理

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

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

用户名:

密码:

30ce15c79f715b28a0194cc1232fa483.png

通过 $_POST接收

echo "用户名:" . $POST['username']; //输出以POST方法提交的用户名 对应input框的name名(唯一)

echo "
";

echo "密码为:" . $POST['paw']; //输出POST方法提交的密码

?>

通过 $_GET接收

echo "用户名:" . $_GET['username']; //输出以GET方法提交的用户名 对应input框的name名(唯一)

echo "
";

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 列名称; //依照**排序,默认升序 降序后跟DESC

DROP删除

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

数据库相关指令

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

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 —— 响应完成后无论成败调用函数

注:转载请注明出处

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值