PHP
- DNS 将域名和IP相互解析. DNS服务器存储的是 IP地址和域名的对应关系.
- host文件:
基本语法
1 变量 age=13; name = “charley”
CMD 命令
- cd\ 后退到根目录
- 停止Apache $ net stop apache2
- 以管理员权限启动cmd: /C/Windows/system32/cmd.exe 右击选择以管理员权限运行.
- 查看Apache 版本 $ httpd -v
Apache 配置文件检查
- 语法检查
- 计算机->属性->高级系统设置->高级->环境变量->path ->编辑. 将变量值拷贝到写字板.
- phpstudy -> 打开文件地址->Apache 到bin -> httpd ->属性 复制地址
- 拼接到写字板上, 以逗号隔开.粘贴到 path 变量值上, 保存.
- cmd 执行 $ httpd.exe -t
- 网站根目录设置
- phpstudy -> 打开文件地址 -> Apache -> conf -> httpd.conf 打开. 搜索 DocumentRoot.
- 设置网站的首页默认文件 directoryIndex
- 搜索 directoryIndex 在后面添加自己想添加的首页 也可以改变顺序, 注意用空格, 隔开
- Listen 命令 Listen [IP][:端口号] Apache只给监听服务的请求提供服务, 其他的ip请求一概不提供.
- eg: Listen 80 // 监听本机所有 80端口的请求
- Listen 192.169.3.100
- Listen 192.169.3.100:80
设置网络根目录的外部(客户端)访问访问权限
“`
指定网站根目录
DocumentRoot “e:\www”
6. 虚拟主机
1. 将一个真是的主机划分成若干个小空间,对外出租, 每个小空间都具有网站的完整功能 (www服务, FTP服务, 邮箱服务,数据库服务等), 每个小空间都可以绑定一个域名.
2. 配置 虚拟主机 NameVirtualHost 我们配置的虚拟主机,是基于域名的虚拟主机, 也就是一个IP地址,绑定多个域名. NameVirtualHost表示哪些IP地址可以访问定义的虚拟主机,一般放在Apache的主配置文件中(httpd.conf)
```
NameVirtualHost *:80
Include conf/vhosts.conf #表示在这个文件中配置
```
3. 配置步骤
1. 配置本地的DNS文件 c:/Windows -> System32/ dirvers -> etc ->hosts
```
127.0.0.1 www.ccl.com
127.0.0.1 www.cclin.com
127.0.0.1 www.cclxin.com
```
2. 配置Apache的主配置
phpstudy -> 打开文件地址 -> Apache -> conf -> httpd.conf 打开
```
Listen 80
NameVirtualHost *:80 #需要与Listen 一致#2.4.x版本这个命令已经删除
Include conf/vhosts.conf
```
3. Apachede 的虚拟主机详细配置文件
phpstudy -> 打开文件地址 -> Apache -> conf -> vhosts.conf
```
<VirtualHost *:80>
#所有ip的80端口都可以访问
ServerName www.ccl.com
</VirtualHost>
<VirtualHost *:80>
#所有ip的80端口都可以访问
ServerName www.cclxin.com
#指定首页
DirectoryIndex abc.html
#指定网页根目录
DocumentRoot "e:\www"
#配置目录权限
<Directory "e:\www">
Options Indexes
Order Deny,Allow
Allow From All
</Directory>
</VirtualHost>
<VirtualHost *:80>
#所有ip的80端口都可以访问
ServerName www.cclin.com
</VirtualHost>
```
###数据类型
1. 整形 取值范围 -21 亿 - 21 亿
$a = 10;
2. 浮点数 不能直接运算
```
if((0.1 + 0.7) == 0.8) // if 不成立
字符串
3.1 单引号里面的转义字符只能是 \ 和 \’ 输出变量的名称
3.2 双引号内的转义字符都可以用. 输出变量的值,如果变量后面跟的是非空字符,编译器可能会糊涂. 可以加标点或者空格解决,也可以加大括号
3.3长字符串 可以直接解析PHP变量, 但是不能做运算``` $str= <<<abc .... abc; each $str ```
- 布尔型 a=true; b = false 非零即真
- 资源类型PHP对外部数据的一个引用如数据库, 文件操作,验证码等
二维数组
方法一
$arr = array(
10,
arrary(10, 23,44,56),
arrary(13,434,56),
arrary(
10,
arrary(7, 23,45)
)
)
dump($arr) // 使用dump 打印结构会很清晰
方法二
$arr[0][0] = 12;
$arr[0][1] = "hahha";
$arr["contact"]["mobile"] = "123456";
数组相关函数
- print_r($arr) // 打印比较清晰的变量. 多用于打印数组的对象.
unset() //删除某个变量,
$a = 100; unset($a); $arr = arrray(10, 20,30,40,50); unset($arr[0], $arr[5]); //删除的值, 但是下标还在 unset($arr); // 删除数组, 下标重新开始.
- count统计数组中单元数据中有效数据的元素个数
$arr = array(10, 30, 40, 50);
$arrCount = count($arr); // 4;
#arr[100] = 30;
$arrCount = count($arr); // 5, 是有效元素的个数.
- foreach() // 用于遍历数组
sum=0; arr = arrary(10 => 5, 43=> 234, 3=>43);
foreach( arran value){
sum+= value;
}
- count统计数组中单元数据中有效数据的元素个数
函数
- 函数内部访问全局变量 使用global.
$name = 10;
function test1(){
global $name ; // global 只能在函数内部使用, 是使用全局变量的地址.
$name = 20; // 不能使用 global $name = 20; 这样的写法
echo $name;
}
test();
echo name; // 20;
Date 函数
- echo date(“y年m月d日 h时i分s秒”); //格式化输出
- echo time(); //返回1970年一月一日到现在的时间. (秒)
数据库基本概念
- 数据库服务器 安装了数据库服务软件的电脑
- www服务器 安装了 Apache 软件的电脑
- DBNS database management system, 数据库管理软件.
- Access 是微软的小型数据库, 100M 左右.
- SQL server 是微软的中型数据库. 付费
- Oracle 美国甲骨文公司, 超大型
- MySQL : 瑞典的AB公司, 后被甲骨文收购, 适应中小型公司.
新建数据库
选择utf_general_ci
- 环境变量配置 phpstudy ->打开mysql文件所在, 复制bin的路径.->我的电脑->环境变量, 将复制的路径拼接在后面, 用分号隔开
登录到MySQL 服务器 mysql.exe -h主机名(mysql 端口3326) -u用户名 -p密码
mysql -hlocalhost -uroot -proot
显示数据库
SHOW DATABASES;
创建数据库 数据库名不区分大小写 (默认字符集为 lain1)
create database if not exists students charset utf8;
create database if not exists students;
create database students;查看数据库字符集
show create database students; // 查看创建数据库的语句
修改命令字符集
alter database students default character set utf-8;
删除数据库
drop database if exists students;
选择当前要操作的数据库
use students;
当前数据库下显示所有的数据表
show tables;
创建数据表
- 列的类型 tinint, text, bigint, char, varchar
- 列的属性
- not null 该字段是否可以为空
- default charley 该字段默认值为charley
- auto_increment 自增, 必须值整形.
- primary key 主键, 不能为空, 不能重复.
- id 字段的属性必须有 1, not null 2. auto_increment, 3, primary key
create table studentsInfo (id int, name text, age int, order int);
eg:
create table news (
id int not null auto_increment primary key, // id 不空,自增,主键.
title varchar(100) not null, // 标题 不空, 长度 100个字符
author varchar(20) not null , // 作者
source varchar(30) not null,
hits int(5) not null default 0, //点击数 长度为5位, 不空, 默认0.
is_ppt tinyint(1) not null default 0, // 是否是轮播图 短整形(- 255 -255), 长度为1位, 不空, 默认为0,
content text null, // 新闻标题 text 可以为空
addate int(16) not null 添加时间 长度为16位, 不为空
);
以上 // 后都为解释说明, 不能保留,
打印表结构信息
describe news
删除表
drop table if exists news; // 删掉news表
数据类型
- tinyint 最短整形 0 - 255(-128 - 127) 占用一个字节
- smallint 短整形 0 - 65535 占用2个字节
- mediumint 中型整形 0 - 1677万 占3个字节
- int 整形 0 - 21 亿 4个字节
- big int 最大整数 0 -42亿 8个字节
- float(M,D) 单精度 精确到小数后7位. float(6, 2), 总长度为6, 小数点后2位.
- double(M, D) 双精度 精确到小数点15位,
- date 时期型 格式为 YYYY-mm-dd
- time 时间型 格式为 00:00:00
- char(M) 固定长度的字符串 0 - 255 个字符
- varchar(M) 可变长度的字符串 0- 65535个字符.
- tinytext 0-255个 字符
- text 0 - 1670 万个字符
- longtext 0-42亿 个字符.
SQL 基础
添加记录
insert into 表名 (字段1, 字段2, 字段3) values(‘字符要加引号’, value2, value3….)
删除记录
delete from 表名 where 条件 // 如果没有条件, 则全部删除.
修改记录
update 表名 set 字段1 = value1, 字段2 = value2, …… where 条件. // 如果不加条件, 则所以记录都会跟新.
查询
select 要查询的字段名(* 表示全部) from 表名 where 条件 order by 排序 limit 限制.
eg select id, titile from news where hits > 5;条件
id between 1 and 10 // id 取 1 - 10之间的 id in (1, 3, 4) // id 是 1, 3, 4 其中之一的. id not in (1, 2, 3) // id 不是 1, 2, 3 title like ('字符要加引号') // title 包含 字符要加引号 title not like ('hdhhd') // title 不包含 hdhhd id is not null // id不是null
排序
select id from news order by id desc; // 按照id 降序
select id from news order by id asc; // 按照id 升序limit startrow 从指定的行数起, pagesize 返回记录数
limit 0,10 // 从第0条起 返回10条
limit 10 , 10// 从第10 条起, 返回10条
*更新
update students set 字段1 = value1, 字段2 = value2 where 条件;
问题一 用dos 添加记录时,中文在数据库中显示的是乱码.
- 原因 数据库的字符集需要与dos的字符集相同.
- 检查 数据库字符集
- 检查dos 查看 当前页编码 左上角命令行图标 -> 属性.
- 提示, CMD 程序的字符集与操作系统字符集一样, 但是操作系统字符集该不了. 所以如果是 因为字符集不同导致的乱码, 解决办法是, 用dos命令 告诉数据库, 当前dos是什么字符集.
“`
cd/ mysql -hlocalhost -uroot -p
$ set names gbk;修改数据库的默认字符集
打开mysql文件夹 - my.ini -> 搜索default (有两处, 默认是拉丁) 改成utf8-> 重启
导入数据库
- 先创建数据库, 在导入数据库, 提示创建的数据库字符集最好是utf8
- 2.