Home > Backend Development > PHP Tutorial > 边记边学PHP-(十六)PHP使用MySQL扩展库操作数据库

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

WBOY
Release: 2016-06-23 13:43:00
Original
800 people have browsed it

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

一、PHP使用MySQL扩展库操作数据库的示意图

此图是我自己画的,可能有不准确的地方。

可以看到使用MySQL操作数据库大致经过五步:

1、连接MySQL服务器

这里使用的函数是mysql_connect()函数

2、选择数据库

这里使用的是mysql_select_db();函数

3、执行SQL语句

这里使用mysql_query()函数。所谓的SQL语句就是增删改查操作。

4、关闭结果集

这里使用mysql_free_result();函数,释放系统资源

5、断开与服务器的连接

这里使用mysql_close();函数

二、细说五步

1、连接MySQL服务器

mysql_connect()函数的语法如下:

resource mysql_connect([string server[,string username[,string password[,bool new_link[,int client_flags]]]]]);

这是最完整的函数参数,但是我们在用的时候就只是用前三个参数就好了。

第一个server指的是MySQL服务器,可以使用默认的localhost。

第二个username就是在安装数据库的时候自己设定的用户名,我们默认的是root。

第三个password就是数据库的密码。

如果连接成功会返回一个MySQL连接标识,失败则返回false。

比如我连接我自己的数据库,我的服务器为localhost,用户名为root,密码为root。我可以这么测试

<?php $host = 'localhost';	$username = 'root';	$password = 'root';	if($conn = mysql_connect($host,$username,$password)){		echo "连接MySQL服务器成功";	}else{		echo "连接失败";	}
Copy after login

2、选择数据库

bool mysql_select_db(string database_name[,resource link_identifier]);

第一个参数database_name是要连接的数据库名。

第二个参数link_identifier是数据库连接标识,也就是上面连接MySQL服务器成功后返回的值。如果不写,默认为上一次打开的数据库连接。建议写。

成功返回true,失败返回false。

比如我需要连接我上次创建的那个test数据库,我可以这么写:

<?php $host = 'localhost';	$username = 'root';	$password = 'root';	$database_name = 'test';	$conn = mysql_connect($host,$username,$password);	if(mysql_select_db($database_name,$conn)){		echo "数据库连接成功";	}else{		echo "连接失败";	}
Copy after login


3、执行SQL语句

所谓SQL语句就是对数据库进行的增删改查操作。在使用命令行操作数据库的时候已经介绍了。函数语法如下:

resource mysql_query(string query[,resource link_identifier]);

第一个参数就是需要执行的sql语句。

第二个参数是mysql_connect返回的连接标识。建议写。

sql语句分为ddl【数据定义语句】 ,dml【 数据操作语句,如update,insert,delete】,dql【 select】 ,dtl【数据事务语句 rollback commit】,这里面最常用的就是dql语句,也就是查询语句。在执行dql语句成功后返回的是一个“数据指针”,在执行dml语句成功后返回的是true,失败都返回false。

比如我想查询现在我的表里有什么数据,我可以这么写。

<span style="font-size:14px;"><?php $host = 'localhost';	$username = 'root';	$password = 'root';	$database_name = 'test';	$conn = mysql_connect($host,$username,$password);	mysql_select_db($database_name,$conn);	$sql = "select * from tb_student;";	$query = mysql_query($sql,$conn);	while($res = mysql_fetch_assoc($query)){		echo $res['id'].'--'.$res['name'].'--'.$res['email'].'--'.$res['address'].'--'.$res['age'].'<br>';	}</span>
Copy after login

增删改不举例了,就是把SQL语句换了。然后返回的true或false。不用再取结果集。

4、关闭结果集

mysql_free_result(resource $res);

比如上面我用完之后就可以关闭结果集了,mysql_free_result($query);

5、断开与数据库连接

mysql_close(resource $link_identifier);

比如上面程序最后我就可以断开连接了,mysql_close($conn);

三、这里给出综合案例

<?php //mysql扩展库操作数据库步骤如下     //1.获取连接     $conn = mysql_connect("localhost","root","root");     if(!$conn){          die("连接失败".mysql_error);     }     //2.选择数据库     mysql_select_db("mr_mysql");     //3.设置操作编码(建议有)     mysql_query("set names utf8");     //4.发送指令sql (ddl【数据定义语句】 ,dml【 数据操作语句,如update,insert,delete】,dql【 select】 ,dtl【数据事务语句 rollback commit】)     $sql = "select * from mr_user;";     $res = mysql_query($sql,$conn);//返回的数据‘指针’不是指到了第一行,而是指到第一行的前一行,也就是第0行。     //var_dump($res);         //5.接收返回的结果,并处理         while($row = mysql_fetch_row($res)){   //mysql_fetch_row()是返回结果集的下一行并赋值给$row          //$row 是一个数组          //第一种取法:$row[i]          echo "<br>";          //echo "$row[0]--$row[1]--$row[2]--$row[3]--$row[4]";          //var_dump($row);          //第二种取法          foreach($row as $key=>$value){               echo "$value--";          }              }     //6.释放资源     mysql_free_result($res);     mysql_close($conn);  //这句可以不写,建议写
Copy after login

四、细节问题

       1.使用完$res结果集后,一定要释放资源
       2.mysql_close()如果没有的话,系统也会自动关闭
       3.如果mysql_close放在了while前面,那么不会影响结果,因为执行完mysql_query语句之后,程序已经把数据库读到内存,再次使用时是从内存读取。但是如果mysql_free_result放在前面,那么就会出错。
       4.$row是个数组
       5.$res如果执行的是dql语句返回的是个资源类型,但是如果执行的是dml语句就会返回bool值

       6.从$res获取行数据的时候,除了mysql_fetch_row($res)[返回索引数组]还有三个方法:

                mysql_fetch_assoc($res)          --------返回一个关联数组

                mysql_fetch_array($res)          ---------返回索引数组和关联数组,很耗内存,建议不要使用

                mysql_fetch_object($res)        ---------把一行数据当成一个对象返回



至此使用MySQL扩展库操作数据库基本完成,这是后面使用Mysqli扩展库操作数据库的基础,下一篇写Mysqli扩展库操作数据库。













source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template