热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP+MySQL最基础的数据库操作方法备忘录

2019独角兽企业重金招聘Python工程师标准PHPMySQL是比较常见的搭配,我用这篇文章记录最基础的数据库操作方法,后面我认为属于这方面基础

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

PHP+MySQL是比较常见的搭配,我用这篇文章记录最基础的数据库操作方法,后面我认为属于这方面基础的知识,都会统一补充记录在这篇文章中。

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

晚上搭好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的最基本操作方法。例子很简单,就是一个用户注册和系统登录。

首先,创建数据库、表和用户

例子很简单,这里附上建表脚本,使用了root用户。

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;


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

235131_O3OK_551955.png        235131_owuy_551955.png


然后,完成register_do.php和login_do.php的业务逻辑,代码比较简单,就不再详细解释了

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

新增这么一个文件,用于查询出所有注册的用户,主要是记录mysqli->query->fetch_assoc的使用方法

' . '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';}}
?>

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

221100_JAei_551955.png

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预处理

预处理的基本原理和适用场景就不在这里多说了,还是用一个简单的添加图书信息的例子来记录。

首先,图书添加的页面如下图所示(bookadd.html):

214636_CIpk_551955.png

建表脚本如下:

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;

添加的逻辑处理代码如下(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';
?>

显示图书信息的逻辑代码如下,同样注意这句话“$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 '

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

';}
?>

显示的页面如下图所示:

220457_Re8z_551955.png

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

保持学习的动力!


转:https://my.oschina.net/idearye/blog/190207



推荐阅读
  • Navicat Premium中MySQL用户管理:创建新用户及高级设置
    本文作为Navicat Premium用户管理系列的第二部分,主要介绍如何创建新的MySQL用户,包括设置基本账户信息、密码策略、账户限制以及SSL配置等。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 本文提供了解决在尝试重置MySQL root用户密码时遇到连接失败问题的方法,包括停止MySQL服务、以安全模式启动MySQL、手动更新用户表中的密码等步骤。 ... [详细]
  • 本文探讨了SQLAlchemy ORM框架中如何利用外键和关系(relationship)来建立表间联系,简化复杂的查询操作。通过示例代码详细解释了relationship的定义、使用方法及其与外键的相互作用。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 在项目实施过程中,当环境配置完成后,在进行系统集成测试时遇到了一个问题:应用程序通过网络请求访问MySQL数据库时始终处于等待状态,尽管输入了正确的用户名和密码,但仍然无法成功连接。本文将详细介绍如何解决MySQL数据库无法被其他IP地址访问的问题。 ... [详细]
  • 本文详细介绍了在Mac操作系统中使用Python连接MySQL数据库的方法,包括常见的错误处理及解决方案。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 对于初次购买阿里云服务器的新手用户来说,如何高效地利用服务器资源并成功部署网站是一个重要的课题。本文将详细指导您完成从购买服务器到网站上线的六个关键步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置单节点的Redis服务,包括下载、解压、编译安装以及启动服务的具体步骤。 ... [详细]
  • 本文介绍了如何处理MySQL数据库中表 'xdb.auditlog' 被标记为已损坏的问题,并提供了解决方案。 ... [详细]
author-avatar
哇哈哈啦啦啦啦_729
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有