相关文章:PHP mysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理   PHPmysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理

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

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

核心步骤

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

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

详细步骤

详细步骤流程图如下:

查询操作

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

<?php
header("content-type:text/html;charset:utf-8");
//第一步:连接数据库
$conn =@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 =@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 =@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);

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

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

    1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo     mysql扩展库与mysql数据库 ...

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

    一.mysql 扩展库操作mysql数据库步骤如下: 1.获取连接 2.选择数据库 3.设置操作编码 4.发送指令(ddl数据定义/dml数据操作/dql数据查询/dtl数据事务控制) 5.接收返回的 ...

  3. mysql扩展库操作mysql数据库

    环境搭建 启用mysql扩展库,在php.ini文件中去配置mysql扩展库 extension=php_mysql.dll 查询数据库 1.建库建表 //建库testcreate database ...

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

    输入英文查询中文 1.建表 create table words( id int primary key auto_increment, enWords varchar(32) not null, c ...

  5. mysql Connector C++ 操作数据库 vs2012

    最近想写一个应用程序,要连接和操作mysql数据库,以前只是用c++ builder 操作过mysql数据库,那是用控件操作的,感觉比较弱智,但是c++ builder vcl控件感觉在多线程里比较坑 ...

  6. Mysql使用终端操作数据库

      使用终端操作数据库       1.如何查看有什么数据库?     show databases;        2.如何选择数据库?    use databasesName;       3. ...

  7. MySQL—Dos命令操作数据库

    MySQL 是一个关系型数据库,存在表的概念 结构,数据库可以存放多张表,每个表可以存放多个字段,每个字段可以存放多个记录 Dos命令操作数据库 PhpStudy使用终端打开数据库 第一次打开默认的密 ...

  8. 通过表名显示数据库中该表的表头和内容(mysql扩展库操作)

    编写一个函数,接收一个表名,然后把表的表头和内容显示在网页 <?php function readTab($tableName){ $conn=mysql_connect("local ...

  9. mysql一:操作数据库

    创建数据库是指在数据库空间中划出一块空间用来存储相关的数据,表就是存储在对应的数据库里面.首先来看下查看数据库的命令:show databases. 这个是用来查询数据库空间下所有的数据库,其中inf ...

随机推荐

  1. SPSS操作:轻松实现1:1倾向性评分匹配(PSM)

    SPSS操作:轻松实现1:1倾向性评分匹配(PSM) 谈起临床研究,如何设立一个靠谱的对照,有时候成为整个研究成败的关键.对照设立的一个非常重要的原则就是可比性,简单说就是对照组除了研究因素外,其他的 ...

  2. Directx11教程(49) stencil的应用-镜面反射

    原文:Directx11教程(49) stencil的应用-镜面反射      本教程中,我们利用stencil来实现一个镜面反射效果. 1.首先我们要在D3DClass中增加几个成员变量及函数. I ...

  3. Ubuntu里node命令出错,找不到

    ubuntu里用sudo apt-get install nodejs安装Node.js后, 发现terminals里运行node命令(比如node –-version)时候会有No such fil ...

  4. 杨柳目-杨柳科-Info-新闻:让中国人焦虑的杨絮背后,隐藏着“拯救”北京的秘密!

    ylbtech-杨柳目-杨柳科-Info-新闻:让中国人焦虑的杨絮背后,隐藏着“拯救”北京的秘密! 1.返回顶部 1. 春天来了,北京和其他很多城市满城飞絮的日子也到了.库叔作为敏感体质,不得不戴上口 ...

  5. 【NS2】TCL debug (转载)

    1.使用NS2进行模拟,就不可避免的会接触TCL/OTCL和C/C++.两者配合使用.一般设置场景啊,业务流啊,都使用TCL/OTCL来编写脚 本.要进行路由实验模拟的话,同一类的实验,这些脚本基本上 ...

  6. window执行python文件

    @echo offD:cd D:\pythonstart python2 del.pyexit

  7. TOP10!全球顶级云计算公司战斗力排行榜

    TOP10!全球顶级云计算公司战斗力排行榜 1亚马逊\VMware.微软 [PConline 资讯]现如今,不谈“云”,似乎会与这个时代格格不入.无论是企业还是个人,都会与“云”扯上关系.可以说,云计 ...

  8. 关于react-router 路径改变页面没有刷新

    routert.js 中: <Router> <Switch> <Route exact path="/" component={Login}> ...

  9. loadrunner_关联检查点参数化

    1.保存变量函数 lr_save_string("192.168.xx.xx","ip"); URL=http://{ip} 2.检查点函数 web_reg_f ...

  10. tinyhttpd简介

    一:简介: tinyhttpd是由J. DavidBlackstone在1999年编写的,实现了一个很简单的web服务器.支持GET和POST方法,总代码量也就在500行左右,可以用来学习HTTP协议 ...