博客列表 >0117数据库基础与春节案例

0117数据库基础与春节案例

曾
原创
2020年02月17日 21:05:04665浏览

数据库

MySQL常用语句

1.增加数据 INSERT

  1. INSERT `表名` SET `列1`(可以理解为要在某一个字段增加数据,就写某一个字段)='值1'`列2`='值2'........


表大概是这这个样子 (表名test)

插入数据(表名与字段名用的是反引号,插入的值使用的单引号,数值型不用引号)

  1. INSERT `test` SET `name`='张飞',`age`=18

图1插入成功

图2已经有数据了

2.更新数据 UPDATE
格式

  1. UPDATE `表明` SET `列1`(可以理解为要在某一个字段更新数据,就写某一个字段)='值1'`列2`='值2'........

例,把‘张飞’的年龄改成16

  1. UPDATE `test` SET `age`=16 WHERE `name`='张飞'



3.数据查询 SELECT
格式

  1. SELECT `(需要返回的字段)` 可以用星号(*)代替表示返回所有字段 FROM `表名` WHERE(条件可以使用表达式)`列1`+条件;

例(查询数据表test中age>20的并返回满足条件的所有字段)

  1. SELECT * FROM `test` WHERE `age`>20



4.删除数据 DELETE
格式

  1. DELETE FROM `表名` WHERE 条件

  1. DELETE FROM `test` WHERE `age`<'20'

图(age小于20的都被删除了)

需要注意:更新与删除操作,都要带上条件,如果不带条件,会更新所有的数据或者删除所有的数据

PDO

1.连接数据库
在连接到数据库的时候需要使用到对象PDO
连接数据库需要先设置数据源(数据类型,主机,数据库名)
然后设置登录名与登录密码

  1. <?php
  2. //创建数据源mysql为数据类型 host=localhost为主机,dbname=phpedu为数据库名
  3. $dsn = 'mysql:host=localhost;dbname=phpedu;';
  4. //设置用户名
  5. $username = 'root';
  6. //设置密码
  7. $password = 'root';
  8. //创建PDO实例并把上面三个参数传递进去
  9. $pdo = new PDO($dsn,$username,$password);

2.操作数据库
操作数据库就是,写一条关于数据库的增加、删除、查询或者更新的语句

  1. <?php
  2. //这里需要注意,表名,与查询字段都是反引号,'='后面的条件为单引号
  3. $sql = "SELECT * FROM `test` WHERE `age`>20";
  4. //创建SQL语句的模板对象,并把创建的SQL语句传递进去
  5. $stmt = $pdo->prepare($sql);
  6. //执行SQL语句;
  7. $stmt->execute();
  8. //获取结果,fecth()方法为每次获取一条结果,里面的(PDO::FETCH_ASSOC)为只获取相关联的部分
  9. $age =$stmt->fetch(PDO::FETCH_ASSOC);
  10. echo '<pre>'.print_r($age,true).'</pre>';
  11. //打印获取到的第二条数据
  12. $age =$stmt->fetch(PDO::FETCH_ASSOC);
  13. echo '<pre>'.print_r($age,true).'</pre>';



如果想一次性获取所有的数据可以使用fetchAll

  1. <?php
  2. //这里需要注意,表名,与查询字段都是反引号,'='后面的条件为单引号
  3. $sql = "SELECT * FROM `test` WHERE `age`>20";
  4. //创建SQL语句的模板对象,并把创建的SQL语句传递进去
  5. $stmt = $pdo->prepare($sql);
  6. //执行SQL语句;
  7. $stmt->execute();
  8. //使用fetchAll获取所有满足条件的数据
  9. $age =$stmt->fetchAll(PDO::FETCH_ASSOC);
  10. echo '<pre>'.print_r($age,true).'</pre>';


案例练习

根据学习到的MYSQL语句,创建一个表格,大概是这样的

成品大概是这样的,里面图片数据都是由数据获取


贴个交易区的HTML代码

  1. <?php
  2. //引入PHP文件
  3. include 'handle.php';
  4. //引入头部模块
  5. include "head.php";
  6. ?>
  7. <!-- 导入二手交易内容 -->
  8. <div class="public-headline">
  9. <span>
  10. 二手交易
  11. </span>
  12. </div>
  13. <div class="public-second-hand">
  14. <!-- 标题1-->
  15. <div class="title1">
  16. <a href="">抢好货</a>
  17. <span>0低价</span>
  18. <span>便捷</span>
  19. <span>安全</span>
  20. <span>快速</span>
  21. </div>
  22. <!-- 标题2-->
  23. <div class="title2">
  24. <span>热门分类</span>
  25. <a href="list.php?cid=1">美女写真</a>
  26. <a href="list.php?cid=2">日本美女</a>
  27. <a href="list.php?cid=3">美国美女</a>
  28. <a href="list.php?cid=4">国内美女</a>
  29. <a href="list.php?cid=5">AV美女</a>
  30. </div>
  31. <!-- 交易内容-->
  32. <div class="exhibition">
  33. <!-- 交易内容左边-->
  34. <div class="exhibition-lt">
  35. <!--嵌入PHP代码遍历在handle.php文件里面获取到的随机数据,并把数据填充到HTML代码-->
  36. <?php foreach($randpics as $item):?>
  37. <div class="exhibition-lt-shop">
  38. <a href="<?=$item['url']?>"><img src="../../<?=$item['path']?>" alt="" width="178" height="122"></a>
  39. <span><?=$item['brief']?></span>
  40. <div>
  41. <spa>&yen;333</spa>
  42. <span>美女</span>
  43. </div>
  44. </div>
  45. <?php endforeach;?>
  46. </div>
  47. <!-- 交易内容右边-->
  48. <div class="exhibition-rt">
  49. <!--嵌入PHP代码遍历在handle.php文件里面获取到的侧边栏广告图片,并填充进HTML代码-->
  50. <?php foreach($secondad as $item):?>
  51. <a href="<?=$item['url']?>"><img src="../../<?=$item['path']?>" alt="" width="190" height="130"></a>
  52. <?php endforeach;?>
  53. <div class="exhibition-rt-ad2">
  54. <?php foreach($secondad1 as $item):?>
  55. <a href="<?=$item['url']?>"><img src="../../<?=$item['path']?>" alt="" width="393" height="60"></a>
  56. <?php endforeach;?>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <?php
  62. //引入评论区,分页,友情链接模块
  63. include 'replay.php';
  64. include 'paginate.php';
  65. include 'footlinks.php';
  66. ?>

关键的handle.php里面的代码

  1. <?php
  2. //使用命名空间
  3. namespace PDO;
  4. //引用PDO
  5. use PDO;
  6. //创建数据源
  7. $dsn = 'mysql:host=localhost;dbname=phpedu';
  8. //创建用户名,密码
  9. $username = 'root';
  10. $password = 'root';
  11. //创建PDO类实例
  12. $pdo = new PDO($dsn, $username, $password);
  13. //创建查询类,因为数据里面只有图片,名字就取了个image
  14. class Image
  15. {
  16. public $table;
  17. public $search;
  18. public $condition;
  19. //调用此方法需要传递一个数据源
  20. public function getImages($pdo)
  21. {
  22. $sql = "SELECT * FROM `$this->table` WHERE `$this->search`='$this->condition'";
  23. // 创建预处理对象,PDO实例由外部传入
  24. $stmt = $pdo->prepare($sql);
  25. // 执行预处理对象
  26. $stmt->execute();
  27. // 获取数据满足条件的所有数据
  28. $images = $stmt->fetchAll(PDO::FETCH_ASSOC);
  29. return $images;
  30. }
  31. // 构造方法,调用此方法需要传入,$table(表名),$search(查询字段一个),$condition(条件一个)
  32. public function __construct($table, $search, $condition)
  33. {
  34. $this->table = $table;
  35. $this->search = $search;
  36. $this->condition = $condition;
  37. }
  38. }
  39. //创建一个遍历数组的类把一个二维数组遍历为普通数组
  40. class Newdata
  41. {
  42. public $type;
  43. public function getNewdata()
  44. {
  45. //调用传递进来的二维数组并遍历它
  46. foreach ($this->type as $item) {
  47. $value = $item;
  48. //返回一个普通数组(索引数组或者关联数组)
  49. return $value;
  50. }
  51. }
  52. //构造方法,需要传递一个二维数组进去
  53. public function __construct($data)
  54. {
  55. // 把这个二维数组赋值给当前类里面的$type
  56. $this->type = $data;
  57. }
  58. }
  59. // 创建一个获取到随机数据的类
  60. class Randdata
  61. {
  62. public $type;
  63. public $num;
  64. // 创建一个方法,获取到随机键名数组
  65. public function getRandom()
  66. {
  67. return array_rand($this->type, $this->num);
  68. }
  69. //创建一个方法,通过引用获取到的随机键名数组方法,获取到具体的随机数据
  70. public function getData()
  71. {
  72. //调用当前类的getRandom()方法,把此方法获取到的随机键名进行遍历
  73. foreach (self::getRandom() as $item) {
  74. //把每次遍历的键名传递到要获取数据的数组里面,然后赋值给$data
  75. $data[] = $this->type[$item];
  76. }
  77. //返回$data值
  78. return $data;
  79. }
  80. //创建构造方法,把要获取随机信息的数组$type,与想要获取几条随机信息的$num传递进类里面
  81. public function __construct($type, $num)
  82. {
  83. $this->type = $type;
  84. $this->num = $num;
  85. }
  86. }
  87. //创建image类实例,并传递参数分别是表明,查询字段,条件
  88. $image = new Image('images', 'id', 1);
  89. //访问image类里面的方法,并把获取到的数据赋值给images
  90. $picroll = $image->getImages($pdo);
  91. //创建一个Newdata实例
  92. $obj = new Newdata($picroll);
  93. // 把获取到的轮播图二维数据变为关联数组
  94. $picroll = $obj->getNewdata();
  95. // 测试是否成功
  96. // print_r($picroll);
  97. // die();
  98. // 测试有没有拿到数据
  99. // echo '<pre>'.print_r($images,true).'</pre>';
  100. // 获取轮播图右侧图片
  101. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  102. $image = new Image('images', 'note', 'rollright');
  103. // 获取到图片数据
  104. $rollright = $image->getImages($pdo);
  105. // 创建一个newdata类实例,传入获取到的右侧图片
  106. $obj = new Newdata($rollright);
  107. // 获取到一个关联数组
  108. $rollright = $obj->getNewdata();
  109. // echo '<pre>' . print_r($rollright, true) . '</pre>';
  110. // 获取到新闻资讯需要的图片
  111. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  112. $image = new Image('images', 'note', 'news');
  113. // 获取到新闻资讯图片
  114. $picnews = $image->getImages($pdo);
  115. // 创建一个newdata类实例,传入获取到的新闻图片
  116. $obj = new Newdata($picnews);
  117. // 获取到转为关联数组的新闻图片
  118. $picnews = $obj->getNewdata();
  119. // print_r($picnews);
  120. // die;
  121. // 获取新闻资讯广告图片
  122. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  123. $image = new Image('images', 'note', 'newsad');
  124. // 获取到新闻广告图片
  125. $newsad = $image->getImages($pdo);
  126. // print_r($newsad);
  127. // die;
  128. // 获取到图片专区需要的图片
  129. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  130. $image = new Image('images', 'note', 'picarea1');
  131. // 获取到图片专区图片1
  132. $picarea1 = $image->getImages($pdo);
  133. // echo '<pre>'.print_r($picarea1,true).'</pre>';
  134. // die;
  135. $image = new Image('images', 'note', 'picarea2');
  136. // 获取到图片专区图片2
  137. $picarea2 = $image->getImages($pdo);
  138. // echo '<pre>'.print_r($picarea2,true).'</pre>';
  139. // die;
  140. $image = new Image('images', 'note', 'picarea3');
  141. // 获取到图片专区图片3
  142. $picarea3 = $image->getImages($pdo);
  143. // echo '<pre>'.print_r($picarea3,true).'</pre>';
  144. // die;
  145. // 获取二手交易广告图片
  146. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  147. $image = new Image('images', 'note', 'secondad');
  148. // 获取到二手交易广告图片
  149. $secondad = $image->getImages($pdo);
  150. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  151. $image = new Image('images', 'note', 'secondad1');
  152. // 获取到二手交易广告图片1
  153. $secondad1 = $image->getImages($pdo);
  154. // echo '<pre>'.print_r($secondad,true).'</pre>';
  155. // 获取二手交易商品图片
  156. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  157. $image = new Image('images', 'note', 'secondshop');
  158. // 获取二手交易商品图片
  159. $secondshop = $image->getImages($pdo);
  160. //使用创建好的获取随机数据类实例,传递进去需要随机获取的数据,与数据数量
  161. $randdata = new Randdata($secondshop, 8);
  162. //使用getdata方法,获取到数据并赋值给变量randpic
  163. $randpics = $randdata->getData();
  164. //打印数据,查看是否成功
  165. // echo '<pre>'.print_r($randpic,true).'</pre>';
  166. // 创建image类实例,并传递参数分别是表明,查询字段,条件
  167. $image = new Image('images', 'note', 'logo');
  168. // 获取到LOGO图片
  169. $logo = $image->getImages($pdo);
  170. // echo '<pre>'.print_r($logo,true).'</pre>';
  171. // 把获取到的LOGO数据更改为普通数据
  172. $obj = new Newdata($logo);
  173. $logo = $obj->getNewdata();
  174. //关闭数据库
  175. unset($pdo);

此次案例主要运用的是查询语句,比较简单的一个用法,还需要继续努力,提高自己的逻辑思维与写代码的能力。
最后,写完了回看的时候,发现懵逼了,自己写的类方法,如果不写备注,都看不懂!!!还是代码写少了,分析少了,逻辑思维还不够灵活,自己写的代码应该要一看就知道是怎么回事才对!!!

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议