php连接数据库的三种方式

介绍三种php链接数据库的方式,我们平时使用框架时不会接触到,可以具体了解一下

mysql

在高版本php中已经找不到了,我下面的测试代码使用的php5.3内置mysql模块

<?php

$conn = mysql_connect('localhost', 'root', 'root');
$db = mysql_select_db('test');
if (!$db) die('conn db err');

$sql = 'select * from test limit 2';

$result = mysql_query($sql);

if (!$result) die('not found');

while (1) {
    $row = mysql_fetch_assoc($result);
    if (!$row)break;
    var_dump($row);
}
$insert_sql = 'insert into `test` (`age`, `name`) VALUES ("18", "new")';

$result = mysql_query($insert_sql);
var_dump(mysql_affected_rows());
var_dump(mysql_insert_id());

die;

上执行结果图

mysqli

基于mysql的修改一下,改动不大,只有基础需要带参数,实例化的链接。

<?php

$conn = mysqli_connect('localhost', 'root', 'root');
$db = mysqli_select_db($conn, 'test');
if (!$db) die('conn db err');

$sql = 'select * from test limit 2';

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

if (!$result) die('not found');

while (1) {
    $row = mysqli_fetch_assoc($result);
    if (!$row)break;
    var_dump($row);
}
$insert_sql = 'insert into `test` (`age`, `name`) VALUES ("18", "new")';

$result = mysqli_query($conn, $insert_sql);
var_dump(mysqli_affected_rows($conn));
var_dump(mysqli_insert_id($conn));

die;

执行结果相同就不上图了,

pdo

<?php
//指定编码格式
$_opts_values = array(PDO::ATTR_PERSISTENT=>true,PDO::ATTR_ERRMODE=>2,PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8');

$db = new PDO("mysql:host=localhost;dbname=test", 'root', 'root', $_opts_values );
if (!$db) die('conn db err');

$sql = 'select * from test limit 2';

$result = $db->query($sql);
if (!$result) die('not found');

var_dump($result->fetchAll());
die;

输出结果

总结

简单说一下这三种方式的差别吧。

  1. mysqli是mysql的新版高版本的php中已经不带有mysql了,仅在php5.3用的多
  2. mysqli很强大,支持事务,多语句执行,预处理语句,存储过程等
  3. mysqli的缺点就是只支持mysql其他数据库不支持
  4. pdo支持多数据库,基本可以实现无缝切换数据库
  5. pdo的确定就是有一些语句执行不了

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值