热门标签 | 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



推荐阅读
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 浅析Mysql数据回滚错误的解决方法_PHP教程:MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin开始一个事务rollback事 ... [详细]
  • Linux环境中使用Mysql数据库
    Linux下Mysql数据库MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司,目前属于Oracle公司,MySQL被广泛地应用在I ... [详细]
  • 阿里云主机实战应用之centos7上的防火墙设置
    最近公司又上了一台服务器,以前都是用centos6系统,这次选择使用了centos7系统的安装镜像,因为现在程序版本在centos7上一般php默认就是5.4以上的,mysql也 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • OCI连接MySQL_PLSQL Developer连接远程数据库OCI客户端安装方法
    本文介绍了使用OCI客户端连接MySQL和PLSQL Developer连接远程数据库的安装方法,避免了在本地安装Oracle数据库或类似的开发套件的麻烦,同时解决了PLSQL Dev连接远程Oracle时的配置问题。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
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社区 版权所有