侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP+MariaDB数据库操作基本技巧备忘总结

php  /  管理员 发布于 7年前   215

本文实例总结了PHP+MariaDB数据库操作基本技巧。分享给大家供大家参考,具体如下:

PHP+MySQL是比较常见的搭配,由于我主观上不太喜欢Oracle,而MySQL被它收购后,骨子里也发生了一些变化,因此我更换了MariaDB,仍然坚持MySQL当初开源信念的亲兄弟。本质上都是MySQL的内核,因此下面所有的数据库操作代码,都是可以直接在MySQL使用的。

晚上搭好PHP+Apache的基础环境,以及安装好MySQL数据库后,写了一个最简单的数据库连接代码,结果报了如下经典错误:Fatal error: Class 'mysqli' not found

' . 'Connect DB error';    exit;  }?>

其实这问题比较简单,从PHP引擎返回的错误就知道mysqli没有被正确的加载,绝大多数的问题都发生在php.ini文件的配置中,“extension=php_mysqli.dll”这个配置项前面默认的分号没有去掉。这个错误我倒没有犯,php安装路径中的ext目录中,也有php_mysqli.dll这个文件,那问题发生在哪里呢?问题应该还是发生在php.ini文件中哪个地方写错了。走读后发现“extension_dir = "ext"”个地方没有修改。我当时脑子没多想,觉得PHP引擎是能够自动找到这个相对路径的。但后来想想,PHP引擎是被Apache加载的,Apache可不知道这个相对关系。还是老老实实的把这个地方改成了绝对路径,OK了。其实可以在这个代码之前,先写这么一段代码,看看mysqli组件是否已经被加载了,这个方法适用于其他组件的加载前的判断。

if (extension_loaded('mysqli')){  echo 'yes';}else{  echo 'no';}

下面用一个用户注册和系统登录记录PHP+MySQL的最基本操作方法。

1、创建数据库、表和用户。

DROP DATABASE IF EXISTS `test`;CREATE DATABASE `test`USE `test`;DROP TABLE IF EXISTS `tbl_user`;CREATE TABLE `tbl_user` ( `username` varchar(32) NOT NULL default '', `password` varchar(32) NOT NULL default '', PRIMARY KEY (`username`)) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

2、创建注册和登录的html页面,分别是register.html和login.html。如下图所示:

 

3、注册和登录的代码:

register_do.php

' . 'Connect DB error';    exit;  }  $query = "select * from tbl_user where username = '" . $username . "'";  echo '

' . $query; $result = $db->query($query); if ($result) { echo '

' . 'The user '. $username .' exist'; echo '

' . 'Back to register'; } else { $query = "insert into tbl_user values ('". $username ."', '". $password ."')"; echo '

' . $query; $result = $db->query($query); if ($result) { echo '

' . 'Register successful'; } }?>

login_do.php

' . 'Connect DB error';    exit;  }  $query = "select * from tbl_user where username = '" . $username . "' and password = '" . $password . "'";  echo '

' . $query; $result = $db->query($query); if ($result->num_rows) { echo '

' . 'Login successful'; } else { echo '

' . 'Login failed'; }?>

userlist.php

' . 'Connect DB error';    exit;  }  echo '

' . 'All user as follows:'; $query = "select * from tbl_user order by username"; if ($result = $db->query($query)) { while ($row = $result->fetch_assoc()) { echo '

' . 'Username : ' . $row['username'] . ' delete'; } }?>

4、该页面最终的显示效果如下图所示:

5、删除用户的代码:

userdelete.php

' . 'Connect DB error';    exit;  }  $query = "delete from tbl_user where username = '" . $username . "'";  echo $query;  if ($result = $db->query($query))  {    echo '

' . 'Delete user ' . $username . ' successful'; } else { echo '

' . 'Delete user ' . $username . ' failed'; } echo '

' . 'Back to user list';?>

Prepare预处理

1、图书添加的页面如下图所示(bookadd.html):

2、建表脚本如下:

DROP DATABASE IF EXISTS `test`;CREATE DATABASE IF NOT EXISTS `test`;USE `test`;DROP TABLE IF EXISTS `tbl_book`;CREATE TABLE IF NOT EXISTS `tbl_book` ( `isbn` varchar(32) NOT NULL, `title` varchar(32) NOT NULL, `author` varchar(32) NOT NULL, `price` float NOT NULL, PRIMARY KEY (`isbn`)) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

3、添加的逻辑处理代码如下(bookadd_do.php):这里特别要注意的是这句话“$db->query("set names utf-8")”,代表向数据库写入数据时,采用utf-8编解码,显示的对数据库表操作的编解码进行设置,以防止中文的乱码。后面我会专门针对这个技术点记录一篇文章。

' . 'Connect DB error';    exit;  }  $db->query("set names utf-8"); //特别注意这句话  $stmt = $db->stmt_init();  $stmt->prepare("insert into tbl_book values (?,?,?,?)");  $stmt->bind_param("sssd", $isbn, $title, $author, $price);  $stmt->execute();  echo '

' . 'Affect rows is ' . $stmt->affected_rows; echo '

' . 'Go to book list page';?>

4、显示图书信息的逻辑代码如下,同样注意这句话“$db->query("set names utf-8")”:

' . 'Connect DB error';    exit;  }  $db->query("set names utf-8"); //特别注意这句话  $stmt = $db->stmt_init();  $stmt->prepare("select * from tbl_book");  $stmt->bind_result($isbn, $title, $author, $price);  $stmt->execute();  while($stmt->fetch())  {    echo 'ISBN : ' . $isbn . '

'; echo 'Title : ' . $title . '

'; echo 'Author : ' . $author . '

'; echo 'Price : ' . $price . '

'; echo '

' . '-----------------------------' . '

'; }?>

5、显示的页面如下图所示:

好了,最基础的部分就记录到这,PHP引擎提供了很方便的数据库操作方法,但正是开发绝不是如此简单,各种异常要仔细考虑如何捕获,如何处理。数据库的设计也是一个挺好玩的话题。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法
  • 在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
  • CentOS 7 x64下Apache+MySQL(Mariadb)+PHP56的安装教程详解
  • php开启mysqli扩展之后如何连接数据库
  • PHP5 mysqli的prepare准备语句使用说明
  • php使用mysqli向数据库添加数据的方法
  • php封装的mysqli类完整实例
  • php中数据库连接方式pdo和mysqli对比分析
  • PHP以mysqli方式连接类完整代码实例
  • PHP使用mysqli扩展连接MySQL数据库


  • 上一条:
    PHP实现的mysql读写分离操作示例
    下一条:
    PhpStorm本地断点调试的方法步骤
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客