数据库
MySQL常用语句
1.增加数据 INSERT
INSERT `表名` SET `列1`(可以理解为要在某一个字段增加数据,就写某一个字段)='值1',`列2`='值2'........
例
表大概是这这个样子 (表名test)
插入数据(表名与字段名用的是反引号,插入的值使用的单引号,数值型不用引号)
INSERT `test` SET `name`='张飞',`age`=18
图1插入成功
图2已经有数据了
2.更新数据 UPDATE
格式
UPDATE `表明` SET `列1`(可以理解为要在某一个字段更新数据,就写某一个字段)='值1',`列2`='值2'........
例,把‘张飞’的年龄改成16
UPDATE `test` SET `age`=16 WHERE `name`='张飞'
图
3.数据查询 SELECT
格式
SELECT `(需要返回的字段)` 可以用星号(*)代替表示返回所有字段 FROM `表名` WHERE(条件可以使用表达式)`列1`+条件;
例(查询数据表test中age>20的并返回满足条件的所有字段)
SELECT * FROM `test` WHERE `age`>20
图
4.删除数据 DELETE
格式
DELETE FROM `表名` WHERE 条件
例
DELETE FROM `test` WHERE `age`<'20'
图(age小于20的都被删除了)
需要注意:更新与删除操作,都要带上条件,如果不带条件,会更新所有的数据或者删除所有的数据
PDO
1.连接数据库
在连接到数据库的时候需要使用到对象PDO
连接数据库需要先设置数据源(数据类型,主机,数据库名)
然后设置登录名与登录密码
例
<?php
//创建数据源mysql为数据类型 host=localhost为主机,dbname=phpedu为数据库名
$dsn = 'mysql:host=localhost;dbname=phpedu;';
//设置用户名
$username = 'root';
//设置密码
$password = 'root';
//创建PDO实例并把上面三个参数传递进去
$pdo = new PDO($dsn,$username,$password);
2.操作数据库
操作数据库就是,写一条关于数据库的增加、删除、查询或者更新的语句
例
<?php
//这里需要注意,表名,与查询字段都是反引号,'='后面的条件为单引号
$sql = "SELECT * FROM `test` WHERE `age`>20";
//创建SQL语句的模板对象,并把创建的SQL语句传递进去
$stmt = $pdo->prepare($sql);
//执行SQL语句;
$stmt->execute();
//获取结果,fecth()方法为每次获取一条结果,里面的(PDO::FETCH_ASSOC)为只获取相关联的部分
$age =$stmt->fetch(PDO::FETCH_ASSOC);
echo '<pre>'.print_r($age,true).'</pre>';
//打印获取到的第二条数据
$age =$stmt->fetch(PDO::FETCH_ASSOC);
echo '<pre>'.print_r($age,true).'</pre>';
图
如果想一次性获取所有的数据可以使用fetchAll
例
<?php
//这里需要注意,表名,与查询字段都是反引号,'='后面的条件为单引号
$sql = "SELECT * FROM `test` WHERE `age`>20";
//创建SQL语句的模板对象,并把创建的SQL语句传递进去
$stmt = $pdo->prepare($sql);
//执行SQL语句;
$stmt->execute();
//使用fetchAll获取所有满足条件的数据
$age =$stmt->fetchAll(PDO::FETCH_ASSOC);
echo '<pre>'.print_r($age,true).'</pre>';
图
案例练习
根据学习到的MYSQL语句,创建一个表格,大概是这样的
成品大概是这样的,里面图片数据都是由数据获取
贴个交易区的HTML代码
<?php
//引入PHP文件
include 'handle.php';
//引入头部模块
include "head.php";
?>
<!-- 导入二手交易内容 -->
<div class="public-headline">
<span>
二手交易
</span>
</div>
<div class="public-second-hand">
<!-- 标题1-->
<div class="title1">
<a href="">抢好货</a>
<span>0低价</span>
<span>便捷</span>
<span>安全</span>
<span>快速</span>
</div>
<!-- 标题2-->
<div class="title2">
<span>热门分类</span>
<a href="list.php?cid=1">美女写真</a>
<a href="list.php?cid=2">日本美女</a>
<a href="list.php?cid=3">美国美女</a>
<a href="list.php?cid=4">国内美女</a>
<a href="list.php?cid=5">AV美女</a>
</div>
<!-- 交易内容-->
<div class="exhibition">
<!-- 交易内容左边-->
<div class="exhibition-lt">
<!--嵌入PHP代码遍历在handle.php文件里面获取到的随机数据,并把数据填充到HTML代码-->
<?php foreach($randpics as $item):?>
<div class="exhibition-lt-shop">
<a href="<?=$item['url']?>"><img src="../../<?=$item['path']?>" alt="" width="178" height="122"></a>
<span><?=$item['brief']?></span>
<div>
<spa>¥333</spa>
<span>美女</span>
</div>
</div>
<?php endforeach;?>
</div>
<!-- 交易内容右边-->
<div class="exhibition-rt">
<!--嵌入PHP代码遍历在handle.php文件里面获取到的侧边栏广告图片,并填充进HTML代码-->
<?php foreach($secondad as $item):?>
<a href="<?=$item['url']?>"><img src="../../<?=$item['path']?>" alt="" width="190" height="130"></a>
<?php endforeach;?>
<div class="exhibition-rt-ad2">
<?php foreach($secondad1 as $item):?>
<a href="<?=$item['url']?>"><img src="../../<?=$item['path']?>" alt="" width="393" height="60"></a>
<?php endforeach;?>
</div>
</div>
</div>
</div>
<?php
//引入评论区,分页,友情链接模块
include 'replay.php';
include 'paginate.php';
include 'footlinks.php';
?>
关键的handle.php里面的代码
<?php
//使用命名空间
namespace PDO;
//引用PDO
use PDO;
//创建数据源
$dsn = 'mysql:host=localhost;dbname=phpedu';
//创建用户名,密码
$username = 'root';
$password = 'root';
//创建PDO类实例
$pdo = new PDO($dsn, $username, $password);
//创建查询类,因为数据里面只有图片,名字就取了个image
class Image
{
public $table;
public $search;
public $condition;
//调用此方法需要传递一个数据源
public function getImages($pdo)
{
$sql = "SELECT * FROM `$this->table` WHERE `$this->search`='$this->condition'";
// 创建预处理对象,PDO实例由外部传入
$stmt = $pdo->prepare($sql);
// 执行预处理对象
$stmt->execute();
// 获取数据满足条件的所有数据
$images = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $images;
}
// 构造方法,调用此方法需要传入,$table(表名),$search(查询字段一个),$condition(条件一个)
public function __construct($table, $search, $condition)
{
$this->table = $table;
$this->search = $search;
$this->condition = $condition;
}
}
//创建一个遍历数组的类把一个二维数组遍历为普通数组
class Newdata
{
public $type;
public function getNewdata()
{
//调用传递进来的二维数组并遍历它
foreach ($this->type as $item) {
$value = $item;
//返回一个普通数组(索引数组或者关联数组)
return $value;
}
}
//构造方法,需要传递一个二维数组进去
public function __construct($data)
{
// 把这个二维数组赋值给当前类里面的$type
$this->type = $data;
}
}
// 创建一个获取到随机数据的类
class Randdata
{
public $type;
public $num;
// 创建一个方法,获取到随机键名数组
public function getRandom()
{
return array_rand($this->type, $this->num);
}
//创建一个方法,通过引用获取到的随机键名数组方法,获取到具体的随机数据
public function getData()
{
//调用当前类的getRandom()方法,把此方法获取到的随机键名进行遍历
foreach (self::getRandom() as $item) {
//把每次遍历的键名传递到要获取数据的数组里面,然后赋值给$data
$data[] = $this->type[$item];
}
//返回$data值
return $data;
}
//创建构造方法,把要获取随机信息的数组$type,与想要获取几条随机信息的$num传递进类里面
public function __construct($type, $num)
{
$this->type = $type;
$this->num = $num;
}
}
//创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'id', 1);
//访问image类里面的方法,并把获取到的数据赋值给images
$picroll = $image->getImages($pdo);
//创建一个Newdata实例
$obj = new Newdata($picroll);
// 把获取到的轮播图二维数据变为关联数组
$picroll = $obj->getNewdata();
// 测试是否成功
// print_r($picroll);
// die();
// 测试有没有拿到数据
// echo '<pre>'.print_r($images,true).'</pre>';
// 获取轮播图右侧图片
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'rollright');
// 获取到图片数据
$rollright = $image->getImages($pdo);
// 创建一个newdata类实例,传入获取到的右侧图片
$obj = new Newdata($rollright);
// 获取到一个关联数组
$rollright = $obj->getNewdata();
// echo '<pre>' . print_r($rollright, true) . '</pre>';
// 获取到新闻资讯需要的图片
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'news');
// 获取到新闻资讯图片
$picnews = $image->getImages($pdo);
// 创建一个newdata类实例,传入获取到的新闻图片
$obj = new Newdata($picnews);
// 获取到转为关联数组的新闻图片
$picnews = $obj->getNewdata();
// print_r($picnews);
// die;
// 获取新闻资讯广告图片
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'newsad');
// 获取到新闻广告图片
$newsad = $image->getImages($pdo);
// print_r($newsad);
// die;
// 获取到图片专区需要的图片
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'picarea1');
// 获取到图片专区图片1
$picarea1 = $image->getImages($pdo);
// echo '<pre>'.print_r($picarea1,true).'</pre>';
// die;
$image = new Image('images', 'note', 'picarea2');
// 获取到图片专区图片2
$picarea2 = $image->getImages($pdo);
// echo '<pre>'.print_r($picarea2,true).'</pre>';
// die;
$image = new Image('images', 'note', 'picarea3');
// 获取到图片专区图片3
$picarea3 = $image->getImages($pdo);
// echo '<pre>'.print_r($picarea3,true).'</pre>';
// die;
// 获取二手交易广告图片
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'secondad');
// 获取到二手交易广告图片
$secondad = $image->getImages($pdo);
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'secondad1');
// 获取到二手交易广告图片1
$secondad1 = $image->getImages($pdo);
// echo '<pre>'.print_r($secondad,true).'</pre>';
// 获取二手交易商品图片
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'secondshop');
// 获取二手交易商品图片
$secondshop = $image->getImages($pdo);
//使用创建好的获取随机数据类实例,传递进去需要随机获取的数据,与数据数量
$randdata = new Randdata($secondshop, 8);
//使用getdata方法,获取到数据并赋值给变量randpic
$randpics = $randdata->getData();
//打印数据,查看是否成功
// echo '<pre>'.print_r($randpic,true).'</pre>';
// 创建image类实例,并传递参数分别是表明,查询字段,条件
$image = new Image('images', 'note', 'logo');
// 获取到LOGO图片
$logo = $image->getImages($pdo);
// echo '<pre>'.print_r($logo,true).'</pre>';
// 把获取到的LOGO数据更改为普通数据
$obj = new Newdata($logo);
$logo = $obj->getNewdata();
//关闭数据库
unset($pdo);
此次案例主要运用的是查询语句,比较简单的一个用法,还需要继续努力,提高自己的逻辑思维与写代码的能力。
最后,写完了回看的时候,发现懵逼了,自己写的类方法,如果不写备注,都看不懂!!!还是代码写少了,分析少了,逻辑思维还不够灵活,自己写的代码应该要一看就知道是怎么回事才对!!!