PHP与MySQL简单入门

386 阅读8分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

事先声明:

这是我复习 PHP 时所写内容,所以其内容很简便,更加适合有过 js 基础的人观看,如果想从头学起 PHP,建议去b站或其他站点查找完整的 PHP 及 MySQL 教程。

安装开发环境:(使用xampp)

  1. 选择PHP开发相关配置

  1. 目录不允许有中文

  1. 安装完成,是否直接打开xampp

  1. 这里的文件夹只需要记住htdocs(php文件存放目录)与FileZillaFTP(ftp传输文件工具)

  1. 将htdocs内容全部删除,放进自己的PHP文件;FileZillaFTP 暂时不用管

  1. 浏览器中打开:localhost;就能进入PHP开发目录;默认输入localhost就能进入,但我这里的localhost默认8080端口被占用,所以我将端口号改为了88,每次打开都需要输入localhost:88;未修改过的可以直接打开,如果打不开查看另一篇文章讲解了如何修改

www.yuque.com/xiaochens/i…

  1. 如果MySQL也打不开,先确认下端口是否被占用,如果没有,那就是因为你之前安装过MySQL了。我这里因为之前安装过宝塔,所以默认启动的MySQL是宝塔的,一直在报

Attempting to start MySQL service...

没有进展,之后修改了下注册表更改了MySQL默认的请求位置就行了:www.yuque.com/xiaochens/i…

  1. 打开成功

一、 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中

  1. break(退出)

退出循环,在得到想要的结果时提前退出循环,不在继续执行

  1. 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数据库其实就是围绕着 增删改查 这四个核心展开的

  1. 数据库常用数据类型:

数值类型: int money bit

浮点型:float

日期时间:datetime

字符串:char(范围) text(范围) varchar(范围) nvarchar(范围)

unicode 字符串

  1. 创建表:

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;
  1. 更多创建表时的限制:
    1. 给创建好的表添加默认值

default ('默认值内容')

例:设置这一行数据为空时的默认值为未填写邮箱

email varchar(100) default ('未填写邮箱')

    1. 限制创建表时的范围

unique check(len(表名) >= 18)

例:设置这一列添加的数据长度必须超过或等于18

cardid varchar(20) unique check(len(cardid) >= 18)

  1. MySQL中的逻辑语句:
    • and 逻辑与 等同 &&
    • or 逻辑或 等同 ||
    • not 逻辑非 等同 !

假设现有一张表 user:uid name age

下面围绕这个表进行学习

1. 增(insert)

  1. 添加一行数据

insert into 表名 (列名1,列名2,列名n...) values (值1,值2,值n...)

例:给user表插入一行数据:

insert into user (uid, name, age) values (1,'张三',18)

  1. 添加部分数据

例:只给user表插入部分数据(插入时需注意:列名需与值名对应):

insert into user (uid, name) values (2,'李四')

  1. 主键自增

例:插入数据时,如果不写主键,则主键会自动+1。

insert into user (name, age) values ('王五',16);

  1. 插入所有列简写

例:如果想添加一整行数据,那么直接写添加值就行,但是格式必须要对应类型:

insert into user values (4, '赵六', 25);

  1. 一次添加多行数据

insert into 表名 values (对应值1),(对应值2),(对应值n...)

例:添加多行也不需要指定键:

insert into user values (5,' 你好', 12),(6, '我好', 13),(7, '大家好', 14)

  1. 需要注意的点:
    • 表的列与值, 必须严格对应 (id 自增列也必须对应) 。
    • 数字不必加单引号,但是字符串必须要加单引号。
    • 一 次添加多行数据时,需使用逗号隔开。

2. 删(delete)

  1. 删除一整个表

delete from 表名

例:删除 user 表:

delete from user

  1. 删除表里的部分数据

delete from 表名 where 条件

例:删除 user 表里 id 为 5 的表:

delete from user where uid = 5

  1. 清空一整个表

truncate table 表名

例:清除整个 user 表的数据:

truncate table user

3. 改(update)

  1. 修改数据

update 表名 set 列1 = 新值1,列2 = 新值2, 列n = 新值n... where 条件

例:找到uid为1的数据,修改它的年龄为28:

update user set age=28 where uid=1;

  1. 修改整张表的数据

例:如果要修改整张表的数据,只需要不加条件就行了:

//这样一来,整张表的所有 age 数据都被改成了 28

update user set age=28

4. 查(select)

  1. 查询所有数据

select 查找列表 from 表名

例:查询 user 表的所有数据:

select * from user

  1. 只查询一行

select * from 表名 where 条件

例:查询 user 表中 uid 为 2 的数据:

select * from user where uid = 2

  1. 查询多行

例:查询所有 uid 大于 5 的数据:

select * from user where uid >=5

  1. 查询某几行的某几列

例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

  1. 连接数据库

$server = mysql_connect('数据库地址', '账号', '密码', '数据库名称');

  1. 执行 SQL 语句

$sql = 'select * from student';

res=mysqlquery(res = mysql_query(sql, $server);

  1. 获取执行结果
  • mysql_fetch_row($res);
    • 将执行结果以索引数组形式返回(推荐使用)
  • mysql_fetch_assoc($res);
    • 返回一个关联数组
  • mysql_fetch_array($res);
    • 同时返回索引数组和关联数组
  • mysql_fetch_object($res);
    • 把数据当作对象返回

data=mysqlfetchrow(data = mysql_fetch_row(res);

  1. 设置字符集

mysql_query($server, "set nammes utf8");

  1. 获取受影响行数

mysql_affected_rows($server);

  1. 返回错误

mysql_error($server);

  1. 释放资源

mysql_free_result($res);

  1. 关闭数据库连接

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 条件

只查某列中的某一行