小知识,大挑战!本文正在参与「程序员必备小知识」创作活动
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
事先声明:
这是我复习 PHP 时所写内容,所以其内容很简便,更加适合有过 js 基础的人观看,如果想从头学起 PHP,建议去b站或其他站点查找完整的 PHP 及 MySQL 教程。
安装开发环境:(使用xampp)
- 选择PHP开发相关配置
- 目录不允许有中文
- 安装完成,是否直接打开xampp
- 这里的文件夹只需要记住htdocs(php文件存放目录)与FileZillaFTP(ftp传输文件工具)
- 将htdocs内容全部删除,放进自己的PHP文件;FileZillaFTP 暂时不用管
- 浏览器中打开:localhost;就能进入PHP开发目录;默认输入localhost就能进入,但我这里的localhost默认8080端口被占用,所以我将端口号改为了88,每次打开都需要输入localhost:88;未修改过的可以直接打开,如果打不开查看另一篇文章讲解了如何修改
- 如果MySQL也打不开,先确认下端口是否被占用,如果没有,那就是因为你之前安装过MySQL了。我这里因为之前安装过宝塔,所以默认启动的MySQL是宝塔的,一直在报
Attempting to start MySQL service...
没有进展,之后修改了下注册表更改了MySQL默认的请求位置就行了:www.yuque.com/xiaochens/i…
- 打开成功
一、 PHP 的基础学习
1. 在 htdocs下新建一个文件夹,记录学习
2. PHP 声明变量:
<?php
// 通过 $ 声明变量;$变量名 = 变量值
$msg = "我的世界";
$wimg ="因为你而变得其妙不可言"."<br>";
echo "$msg"."-"."$wimg";
?>
页面输出:(点 在PHP里是连接符,与js中的 逗号 相似,且PHP中也可以使用逗号来分隔变量)
变量的命名规则 :(php的变量名区分大小写;)
- 小写a-z,
- 大写A-Z
- _下划线
- 数字0-9组成,
注意:
- 变量名必须以美元符号$开始;
- 变量名开头可以以下划线开始;
- 变量名不能以数字字符开头;
3. PHP 中的数学运算符
-
-
- / %
-
其实就跟js没区别
<?php
// php中的数学运算符
$add1 = 1;
$add2 = 2;
echo "相加>" , $add1 + $add2 . "<br>";
$sub1 = 2;
$sub2 = 1;
echo "相减>" , $sub1 - $sub2 . "<br>";
echo "相乘>" , $sub1 * $sub2 . "<br>";
echo "相除>" , $sub1 / $sub2 . "<br>";
echo "求百分比>" , $sub1 % $sub2 . "<br>";
?>
输出:
4. 比较运算符
, >= , = , < , <= ,!= ,== ,=== ,!==
也与js相同
<?php
// php中的比较运算符
$sum = 0;
$sum = $sub1 > $sub2;
echo ">是否大于" , var_dump($sum) , "<br>";
$sum = $sub1 >= $sub2;
echo ">=是否大于等于" , var_dump($sum) , "<br>";
$sum = $sub1 == $sub2;
echo "==是否等于" , var_dump($sum) , "<br>";
$sum = $sub1 <= $sub2;
echo "<是否小于" , var_dump($sum) , "<br>";
$sum = $sub1 <= $sub2;
echo "<=是否小于等于" , var_dump($sum) , "<br>";
$sum = $sub1 != $sub2;
echo "!=是否不等于" , var_dump($sum) , "<br>";
$sum = $sub1 == $sub2;
echo "==是否等于" , var_dump($sum) , "<br>";
$sum = $sub1 === $sub2;
echo "===是否绝对等于" , var_dump($sum) , "<br>";
$sum = $sub1 !== $sub2;
echo "!==是否绝对不等于" , var_dump($sum) , "<br>";
?>
输出:
5.逻辑运算符与字符串运算符
// 如果有一个为false,那么结果就是false
&&(并且)
// 如果有一个为true,那么结果就是true
||(或者)
// 取反,true改为false,false改为true
!(取反)
// 对输出进行拼接
. 拼接运算
// 效果一样,不过在输出效率上,还是,更快一点
, 连接运算符
<?php
// 逻辑运算符
$cat = true;
$dog = false;
$msg = $cat && $dog;
echo var_dump($msg) . "<br>" ;
$msg = $cat || $dog;
echo var_dump($msg) . "<br>" ;
echo var_dump(!$cat) . "<br>" ;
?>
输出:
6.常用逻辑语句
if switch 判断 和 while for foreach 循环
亦如js一样(foreach放在后面数组哪章讲解)
<?php
// if switch 判断 和 while for foreach 循环
$one = 0;
$ten = 10;
// 对条件进行判断并返回true(对)和false(错)
if ( $ten > $one ){
echo $ten,'大于',$one;//为 true 执行这里
}else{
echo $ten,'不大于',$one;
}
echo '<br>';
// 分支判断,对变量,或条件进行诶个判断,判断成功后退出switch
switch ($ten){
case 1:
echo '在第一个';
break;
case 5:
echo '在第二个';
break;
case 10:
echo '在第三个';
break;
default:
echo '此值不存在';// 如果都没匹配到则输出这里
}
echo '<br>';
// 只要条件为真(true),则会一直执行代码块里的内容
while ($ten > $one){
$one++ ; // $one 自增,每次执行都+1
echo 'while执行了',$one,'次';
}
echo '<br>';
//注意:给for循环的第一个值赋为i已经是国际惯例了,
//算是一个潜规则了,几乎所有语言的for循环第一项赋值都是i
for ($i = 1;$i <= 10 ; $i++){ // for循环是使用的最多的循环
echo 'for执行了',$i,'次';
}
?>
输出:
7. break 和 continue
常用于for和while或者switch中
- break(退出)
退出循环,在得到想要的结果时提前退出循环,不在继续执行
- continue(继续)
在得到想要的结果时继续循环,直到循环正常结束
<?php
for($i=1; $i<=10; $i = $i+1){
if($i == 4){
echo '找到4了'.'<br>';
continue;// 有一说一,个人觉得这个continue用得少
// 毕竟就算不加这个,在输出后,程序也是继续循环
}
echo $i,'<br />';
}
for($i=1; $i<=10; $i = $i+1){
if($i == 4){
echo '找到4了,溜了';
break; // 输出上面后,就不会继续循环了
}
echo $i,'<br />';
}
?>
输出:
8.字符串及字符串转义
如果想输特殊内容则需要进行转义
<?php
$name = "你好""''我好";
$names = '你好""''我好';
echo $name,'<br>',$names,'<br>';
// 在双引号里写变量,PHP 能够识别出来,单引号不行;单引号解析、输出速度比双引号快
$a = '123';
$b = "b+$a";
$c = 'b+$a';
?>
输出:
9.数组
9.1 PHP 的数组与js稍稍不同
<?php
// 都是以键(key)值(val)的形式声明的
$arr = array('1'=>'张三的衣服','2'=>'李四的鞋子');
// 用echo打印数组会报错,只能以print_r打印
print_r($arr);
?>
输出:
9.2 遍历数组
如果想单独取出数组内容:
<?php
$arr = array('a','b','c','d','e');
// 单独取出
echo $arr[0],'<br >';
echo $arr[1],'<br >';
echo $arr[2],'<br >';
echo $arr[3],'<br >';
echo $arr[4],'<br >';
echo '<br>';
?>
输出:(这样真的很麻烦)
使用for:
<?php
for ($i = 0;$i < count($arr); $i++){
echo $arr[$i],'<br>';
}
?>
输出结果一样
但如果想要输出关联数组呢?
使用foreach:
<?php
$arr = array('name' => '张三', 'sex' => '男', 'age' => 18);
foreach ($arr as $k => $v){
echo $k,$v,'<br>';
}
echo '<br>';
// 只要值
foreach ($arr as $v ){
echo $v,'<br>';
}
?>
输出:
注: PHP中的foreach没办法单独拿出键
9.3 顺便说下 PHP 中三种输出的区别:
<?php
$var = 123;
$vars = "123";
$varArr = array('0' => 1, '2' => 2);
// echo 正常输出变量以及字符串等内容
echo $var,$vars,'<br>';
// var_dump 输出变量的同时会将变量的类型及长度也一起输出
var_dump($var,$vars);
echo '<br>';
// print_r 专门打印数组的,虽说也可以打印变量
print_r($varArr);
echo '<br>';
print_r($var);
echo '<br>';
?>
输出:
二、 MySQL的基础学习
MySQL数据库其实就是围绕着 增删改查 这四个核心展开的
- 数据库常用数据类型:
数值类型: int money bit
浮点型:float
日期时间:datetime
字符串:char(范围) text(范围) varchar(范围) nvarchar(范围)
unicode 字符串
- 创建表:
create table 表名 (
字段名 数据类型 是否可以为空
) charset utf8; // 设置字符编码
// 创建一个名为 msg 的表
create table msg (
// 建立一个数字类型的 id 字段并设置为主键(primary key)
// 且自增(auto_increment)
id int primary key auto_increment,
// 建立一个字符串类型的 title 字段,并设置最多只能存储 10 个字节
title varchar(20),
// 建立一个字符串类型的 content 字段,并设置最多只能存储 100 个字节
content varchar(100),
// 设置这个表的编码为 utf-8
) charset utf8;
- 更多创建表时的限制:
-
- 给创建好的表添加默认值
default ('默认值内容')
例:设置这一行数据为空时的默认值为未填写邮箱
email varchar(100) default ('未填写邮箱')
-
- 限制创建表时的范围
unique check(len(表名) >= 18)
例:设置这一列添加的数据长度必须超过或等于18
cardid varchar(20) unique check(len(cardid) >= 18)
- MySQL中的逻辑语句:
-
- and 逻辑与 等同 &&
- or 逻辑或 等同 ||
-
- not 逻辑非 等同 !
假设现有一张表 user:uid name age
下面围绕这个表进行学习
1. 增(insert)
- 添加一行数据
insert into 表名 (列名1,列名2,列名n...) values (值1,值2,值n...)
例:给user表插入一行数据:
insert into user (uid, name, age) values (1,'张三',18)
- 添加部分数据
例:只给user表插入部分数据(插入时需注意:列名需与值名对应):
insert into user (uid, name) values (2,'李四')
- 主键自增
例:插入数据时,如果不写主键,则主键会自动+1。
insert into user (name, age) values ('王五',16);
- 插入所有列简写
例:如果想添加一整行数据,那么直接写添加值就行,但是格式必须要对应类型:
insert into user values (4, '赵六', 25);
- 一次添加多行数据
insert into 表名 values (对应值1),(对应值2),(对应值n...)
例:添加多行也不需要指定键:
insert into user values (5,' 你好', 12),(6, '我好', 13),(7, '大家好', 14)
- 需要注意的点:
-
- 表的列与值, 必须严格对应 (id 自增列也必须对应) 。
- 数字不必加单引号,但是字符串必须要加单引号。
-
- 一 次添加多行数据时,需使用逗号隔开。
2. 删(delete)
- 删除一整个表
delete from 表名
例:删除 user 表:
delete from user
- 删除表里的部分数据
delete from 表名 where 条件
例:删除 user 表里 id 为 5 的表:
delete from user where uid = 5
- 清空一整个表
truncate table 表名
例:清除整个 user 表的数据:
truncate table user
3. 改(update)
- 修改数据
update 表名 set 列1 = 新值1,列2 = 新值2, 列n = 新值n... where 条件
例:找到uid为1的数据,修改它的年龄为28:
update user set age=28 where uid=1;
- 修改整张表的数据
例:如果要修改整张表的数据,只需要不加条件就行了:
//这样一来,整张表的所有 age 数据都被改成了 28
update user set age=28
4. 查(select)
- 查询所有数据
select 查找列表 from 表名
例:查询 user 表的所有数据:
select * from user
- 只查询一行
select * from 表名 where 条件
例:查询 user 表中 uid 为 2 的数据:
select * from user where uid = 2
- 查询多行
例:查询所有 uid 大于 5 的数据:
select * from user where uid >=5
- 查询某几行的某几列
例1:查询 user 表中 uid 为 2 的 name:
select name from user where uid = 2
例2:查询 user 表中 uid 为 3 的 age:
select age from user where uid = 3
三、PHP 中操纵 MySQL
- 连接数据库
$server = mysql_connect('数据库地址', '账号', '密码', '数据库名称');
- 执行 SQL 语句
$sql = 'select * from student';
sql, $server);
- 获取执行结果
- mysql_fetch_row($res);
-
- 将执行结果以索引数组形式返回(推荐使用)
- mysql_fetch_assoc($res);
-
- 返回一个关联数组
- mysql_fetch_array($res);
-
- 同时返回索引数组和关联数组
- mysql_fetch_object($res);
-
- 把数据当作对象返回
res);
- 设置字符集
mysql_query($server, "set nammes utf8");
- 获取受影响行数
mysql_affected_rows($server);
- 返回错误
mysql_error($server);
- 释放资源
mysql_free_result($res);
- 关闭数据库连接
mysql_close($server);
四、MySQL 的常用语句
- show databases
查看所有数据库
- create databases 数据库名称
创建数据库
- use 数据库名
使用数据库
- select version()
查看 MySQL 版本
- select now()
显示当前时间
- drop table 数据表名
删除数据表
- desc 数据表名
查看表
- delete from 数据表名 wherer 条件
删除数据表里的某一行数据
- insert into user (列1, 列2) values(值1, 值2)
添加数据
- update 数据表名 set name='zhangsan' wherer 条件
修改数据表中的某一行数据,不加条件会默认修改所有数据
- select * from 数据表名 where 条件
查询表里的某一行,不加条件默认查询整个表
- select 列名 from 数据表名 where 条件
只查某列中的某一行