PHP的mysql扩展整理,操作数据库的实现过程分析

从某种程度上说,php就是一个数据库的客户端.

尽管官方已经不推荐使用,php7.0甚至已经移除了mysql扩展.但是学习一下面向过程的编程思想也是不错的.

核心步骤

连接数据库 => 执行sql语句

其实通过mysql扩展对数据库的操作都是围绕这两个步骤来的

详细步骤

详细步骤流程图如下:

查询操作

下面程序可以实现查询本地test数据库中class表,并将查询结果输出:

<?php
header("content-type:text/html;charset:utf-8");
//第一步:连接数据库
$conn [email protected]mysql_connect(‘localhost‘,‘root‘,‘root‘);
if (!$conn){
    die("连接失败,错误信息".mysql_error());
}
//第二步:选择数据库
mysql_select_db("test");

//第三步:设置字符集
mysql_set_charset("utf8");

//第四步:创建sql语句
$sql = "select* from `class`";

//第五步:执行sql
if($res = mysql_query($sql)){
    while($row =mysql_fetch_assoc($res)){
        echo "<pre>";
        var_dump($row);
        echo "</pre>";
    }
}//第六步:关闭结果集
mysql_free_result($res);

//第七步:释放连接
mysql_close($conn);

mysql_query()函数的参数如果是查询操作,执行后将返回一个指向查询结果的资源文件

  如果查询失败,将返回一个空字符串

mysql_fetch_开头的函数一共有四个,都能够获取函数的查询结果:

mysql_fetch_row:将查询结果以索引数组的形式返回

mysql_fetch_assoc:返回关联数组

mysql_fetch_array:会把索引数组和关联数组都返回

mysql_fectch_object:返回对象的形式

以上面代码为例

mysql_fetch_assoc输出的结果为:

改为mysql_fetch_row输出的结果为

dml操作

查询操作需要获取查询结果,增删改操作不需要,因此步骤上略有不同:

<?php
header("content-type:text/html;charset:utf-8");
//第一步:连接数据库
$conn [email protected]mysql_connect(‘localhost‘,‘root‘,‘root‘);
if (!$conn){
    die("连接失败,错误信息".mysql_error());
}
//第二步:选择数据库
mysql_select_db("test");

//第三步:设置字符集
mysql_set_charset("utf8");

//第四步:创建sql语句
$sql = "delete from class where `sname`=‘谢尔顿李库伯‘";

//第五步:执行sql
$exec =mysql_query($sql);
if (mysql_affected_rows($conn)){
    echo ‘操作成功,对记录产生影响‘;
}else{
    echo ‘操作失败‘.mysql_error();
}

//不需要释放资源
//第六步:释放连接
mysql_close($conn);

与查询操作不同之处:

  1.判断执行是否成功应该使用mysql_affected_rows()函数,而不是mysql_query()函数:

    dml操作都是会对数据表产生影响的,

    mysql_query()里的sql语句即使执行成功,也未必会对数据表产生影响(比如删除一个不存在的列,或者修改的结果和原结果相同)

    因此要判断操作是否成功,就要判断是否对数据库产生了影响,mysql_affected_rows()就可以实现这一功能,数据库改变时,该函数会返回ture,否则返回false

  2.不需要关闭结果集,因为本身就没有结果集

  3.mysql_query()执行的dml操作时的返回值与查询操作不同,他将返回一个Boolean类型的值,执行成功为true,执行失败为false

插入和修改操作与删除操作基本相同,只需要修改对应的sql语句即可.

数据库的其他操作

除了对数据表内记录的操作,mysql扩展还能执行很多数据库操作:如show\drop\alter等

以删除数据表操作为例:与dml操作相比,只需要修改sql语句和判断执行是否成功的语句即可

<?php
header("content-type:text/html;charset:utf-8");
//第一步:连接数据库
$conn [email protected]mysql_connect(‘localhost‘,‘root‘,‘root‘);
if (!$conn){
    die("连接失败,错误信息".mysql_error());
}
//第二步:选择数据库
mysql_select_db("test");

//第三步:设置字符集
mysql_set_charset("utf8");

//第四步:创建sql语句
$sql = "drop table deletetest";

//第五步:执行sql
if (mysql_query($sql)){
    echo ‘操作成功‘;
}else{
    echo ‘操作失败‘.mysql_error();
}

//不需要释放资源
//第六步:释放连接
mysql_close($conn);

原文地址:https://www.cnblogs.com/iszhangk/p/11419695.html

时间: 2024-10-07 05:45:34

PHP的mysql扩展整理,操作数据库的实现过程分析的相关文章

边记边学PHP-(十六)PHP使用MySQL扩展库操作数据库

PHP提供了很多扩展库,这里说的是使用MySQL扩展库,但是这种扩展库在不久的将来就会被摒弃,因为如果使用MySQL扩展库编写的代码在运行的时候会有warning的提示.我本来想直接写另一种,但是感觉这是基础.MySQL扩展库,一说到库,自然而然就想到是一堆函数,很多函数组成一个库,使用扩展库也就是使用里面的函数.MySQL扩展库是完全面向过程的,显然不符合面向对象的特性,被摒弃也是可以理解的.废话不多说,直接上重点. 一.PHP使用MySQL扩展库操作数据库的示意图 此图是我自己画的,可能有不

边记边学PHP-(十七)PHP使用MySQLi扩展库操作数据库1

上一篇写了使用MySQL扩展库操作数据库,但是MySQL扩展库是完全面向过程的库,与现在逐渐走上舞台的面向对象思想有点差别.那么MySQLi扩展库就很好的解决了这个问题. 一.MySQLi扩展库是什么 mysqli(mysql improve)是mysql扩展库的增强版. mysql扩展库 和mysqli扩展库的比较: 1.mysqli的稳定性.安全性和效率有所提高 2.mysqli支持面向对象编程,以前的mysql是面向过程的.同时mysqli扩展库考虑到PHP老程序员,也提供了面向过程的风格

php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo   mysql扩展库与mysql数据库区别 ? php设计者封装了一些方法去操作mysql数据库,这些方法集中起来形成了mysql扩展库.mysql数据库存放数据.     2.使用php的MySQL扩展库操作MySQL数据库案例: (1)环境搭建:启用MySQL数据库,在php.ini文件中配置使用MySQL数据库,          

PHP mysql 扩展库 操作mysql数据库步骤

1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面向对象:查询列表 <?php //mysqli 操作数据(面向对象风格) #1.创建Mysql对象 $mysqli=new MySQLi("127.0.0.1","root","daomul","test"); if(!$m

边记边学PHP-(十七)PHP使用MySQLi扩展库操作数据库2

从前天开始,我的电脑不知道怎么了,写程序的时候无缘无故就死机.还不是彻底死,鼠标还能动,就是点击不好使,也打不开任务管理器.昨晚检查一下硬盘,有六个坏道,也不知道是不是这个原因.但是我在玩的时候,只要不打开编译器写程序,啥事也没有.玩游戏也不回出现那种情况.把我搞得好烦. 四.Mysqli扩展库增强 MySQLi扩展库在基础操作上看着没什么不同,只是从面面向过程转换成了面向对象.但是既然是mysql扩展库的增强,那一定有强的地方.有如下代码: 1.批量执行sql语句 <?php //mysqli

在线小词典(mysql扩展库操作)

输入英文查询中文 1.建表 create table words( id int primary key auto_increment, enWords varchar(32) not null, chWords varchar(256) not null); 2.插入数据 insert into words (enWords,chWords) values ('I','我');insert into words (enWords,chWords) values ('you','你');inse

mysql之DDL操作--数据库

SQL是操作关系数据库非常重要的一门编程语言 structure query language既然是语言自然可以编程,SQL的分类可依据操作对象的不同分为DDL,DML,DCL. 我们操作数据库如创建,添加,更新,删除操作,如操作表等都是属于定义范围. 所以DDL则是SQL定义语言. 我们要用数据库来存储数据,自然是先有库,再有表,然后再数据,所以我们要先定义库,定义表. 1.创建数据库 create database db_name [数据库选项] 一般情况下选项可以不填写 如我们创建一个学生

MySQL创建及操作数据库建议命令汇总

SQL全称:结构化查询语言(Structured Query Language) 包含4种语言 1.数据定义语言 DDL Data Definition Language 2.数据操作语言 DML Data Manipulation Language 3.数据查询语言 DQL Data Query Language 4.数据控制语言 DCL Data Control Language DDL中的常用命令: 1.创建数据库 create database db_name character set

MySQL创建和操作数据库表demo

[1]建立员工档案表要求字段:员工员工编号,员工姓名,性别,工资,email,入职时间,部门. [2]合理选择数据类型及字段修饰符,要求有NOT NULL,auto_increment, primary key等. DROP TABLE IF EXISTS `workers_info`;CREATE TABLE `workers_info` (`id` int(11) NOT NULL AUTO_INCREMENT,`workername` varchar(20) NOT NULL,`sex`