php连接数据库的两种方式- 面向过程 面向对象

一、面向对象
1. 链接数据库
$conn = @new mysqli("127.0.0.1","root","","mydb");

if($conn->connect_errno){ //返回链接错误号
// 返回链接错误信息
die("数据库链接失败:".$conn->connect_error);
}

2. 选择数据库
$conn->select_db("mydb") or die("选择数据库失败:".$conn->error);

3.设置字符集编码
$conn->set_charset("utf8") or die("设置字符集失败:".$conn->error);

4. 准备SQL语句
$sql = <<<sql
select * from tb1;
sql;

5. 执行SQL语句,返回结果集或者布尔类型true/false
$res = $conn->query($sql);

6. 返回结果集中的字段数
var_dump($res->field_count);
    返回结果集中的总行数
var_dump($res->num_rows);

7. 返回关联数组和索引数组
var_dump($res->fetch_array());
   返回索引数组
var_dump($res->fetch_row());
   返回关联数组
var_dump($res->fetch_assoc());
   返回一个对象
var_dump($res->fetch_object());

8. 将结果集指针移到指定位置
$res->data_seek(0);

9. 返回结果集中的一个字段,并将指针移到下一列
var_dump($res->fetch_field());
   直接返回结果集中的所有字段
var_dump($res->fetch_fields());

10.释放结果集资源
$res->close();// $res->free();
    关闭数据库连接
$conn->close();

二、面向过程

1.连接数据库

@ $conn = mysqli_connect("127.0.0.1", "root", "slk5550123", "mydb");

if(mysqli_connect_error($conn)){ //返回错误信息
exit("数据库连接失败,失败号".mysqli_connect_errno($conn)."失败信息:".mysqli_connect_error($conn));
}

  连接数据库同时判断
 @ $conn = mysqli_connect("127.0.0.1","root","slk55501233","mydb") or die("数据库连接失败,失败信息:".mysqli_connect_error($conn));

连接数据库: mysqli_connect
参数: ① 主机地址 ②MySql用户名 ③MySql密码 ④选择链接的数据库 ⑤端口号
 返回: 如果链接成功,返回资源类型的标识符号
 如果连接失败,返回false

如果有MySql建立的连接不止一条,那么以后操作数据库的各种函数,都必须传入返回的连接符号。
 如果与MySql建立的连接只有一条,那么以后操作数据库的各种函数就不必传入这个标识符号

3. 选择数据库mysqli_select_db
 参数: ① 资源表示符 ②选择的数据库名称
 返回: 连接成功返回true,连接失败返回false

如果修改数据库成功,则资源标识符中的数据库就会发生变更
 如果修改失败,而没有通过代码终止操作,则后续代码可以使用原数据库继续执行。

//选择数据库同时判断
 mysqli_select_db($conn,"mydb") or die("数据库选择失败");

4.设置字符集编码
mysqli_set_charset($conn,"utf8");
//只能是utf8,而不能使utf-

5.编写sql语句
$sql = "select * from tb1";

6. 执行sql语句
 如果是增删改,将返回bool类型 表示是否成功 DML
 如果是查询,将返回资源结果集 DQL
 如果查询失败,返回false

$res = mysqli_query($conn,$sql);$res = mysqli_query($conn,$sql);

7.返回数据库中操作影响的行数及插入语句的ID

DML时: 返回上一次操作时,受影响的行数
var_dump(mysqli_affected_rows($conn));
 执行插入语句时,返回上次最新插入的主键id
 var_dump(musqli_insert_id($conn))

DQL时,返回资源结果集中的行数
mysqli_num_rows($res);
DQL时,返回资源结果集中的字段数
mysqli_num_fields($res);

8. 处理结果集,返回关联数组和索引数组
 参数: ① 需要处理的结果集
     ② 返回那种数组格式,mysqli_assoc - 关联数组
 mysql_num 数字数组
 mysql_both 默认,同时产生关联和数字数组

返回关联数组
//mysqli_fetch_assoc($result)
返回索引数组
//mysqli_fetch_row($result)
返回一个对象
//mysqli_fetch_object($result)

9.返回结果集中的一个字段,并将指针移到下一列
mysqli_data_seek:设置结果集指针位置
mysqli_data_seek($res, 0);

返回结果集中每一列字段的信息(字段名、表名、数据库名、字段类型、长度等)*/
mysqli_fetch_field($res);

10.释放查询资源结果集并关闭数据库连接 
  mysql_free_result($res);
  关闭数据库连接
  mysql_close($conn);

时间: 2024-10-25 17:13:51

php连接数据库的两种方式- 面向过程 面向对象的相关文章

C3P0连接数据库的两种方式

方法一(推荐):使用xml文件连接 xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">

ADO.NET连接数据库的两种方式

//实现了IDisposable接口的类,用using括起来 //插入数据 string connString = "Data Source=(local);Initial Catalog=Linq;Integrated Security=SSPI"; using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()

javascript消除字符串两边空格的两种方式,面向对象和函数式编程

主要是javascript中消除字符串空格,比较两种方式的不同 //面向对象,消除字符串两边空格 String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }; //去左右空格的函数; function trim(s){ return s.replace(/(^\s*)|(\s*$)/g, ""); }调用消除空格的两种方式. var defualtPhone =

java的动态代理的两种方式和spring的aop面向切面编程的对比

java动态代理的两种方式 使用动态代理的好处:可以进行类的功能的加强,同时减少耦合和代码的冗余,耦合的意思是不用吧加强的部分写到各个实现类里面,冗余的意思是如果对每个实现类加强的部分是一样的,通过一个代理类即可实现 基于jdk的动态代理 通过jdk中自带的Proxy类进行动态的代理,Proxy创建动态代理对象的时候要传入三个参数,第一个是classloader,第二个是interfaces,第三个是代理类实现的方法 要求:代理的是一个接口,必须至少有一个实现类 创建接口的代码: /** * a

WebService的两种方式SOAP和REST比较 (转)

我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript提供API,而淘宝TOP则采用直接的HTTP+XML请求方式,最令我疑惑的是教材上讲的WSDL,UDDI从没有在这些API中出现过.现在知道了WebService原来有两种方式,一是SOAP协议方式,在这种方式下需要WSDL,UDDI等,二是REST方式,这种方式根本不需要WSDL,UDDI等.而且

(转)WebService的两种方式soap和rest的比较

我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript提供API,而淘宝TOP则采用直接的HTTP+XML请求方式,最令我疑惑的是教材上讲的 WSDL,UDDI从没有在这些API中出现过.现在知道了WebService原来有两种方式,一是SOAP协议方式,在这种方式下需要 WSDL,UDDI等,二是REST方式,这种方式根本不需要WSDL,UDDI等.

WebService的两种方式SOAP和REST比较

我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript提供API,而淘宝TOP则采用直接的HTTP+XML请求方式,最令我疑惑的是教材上讲的WSDL,UDDI从没有在这些API中出现过.现在知道了WebService原来有两种方式,一是SOAP协议方式,在这种方式下需要WSDL,UDDI等,二是REST方式,这种方式根本不需要WSDL,UDDI等.而且

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权.因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去.因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态.然后等待消费者消费了商品,然后消费者通知生产者队列有空间了.同样地,当

实验--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用(杨光)

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 攥写人:杨光  学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验要求: 选择一个系统调用(13号系统调用time除外),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/sys