php连接mysql的方式_php连接mysql的三种方式

php连接mysql有三种方式,分别是:mysql拓展,mysqli拓展,pdo对象

其中mysql拓展是早期php连接mysql的方式。

mysqli拓展是php连接mysql的新方式,支持事务等mysql新特性,而且有预处理,能有效防止sql注入。缺点是只支持到mysql的连接,对其他数据库不友好。

pdo数据对象是php到数据库的数据对象,是php应用中的一个数据库抽象层。pdo提供了一个抽象的api接口,使得php业务方不需要关心连接的到底是哪一种数据库。也就是说,你可以使用pdo的api来无缝的切换要连接的数据库类型,而不用或者很少的更改业务代码,pdo的功能类似于jdbc之类的接口。pdo同样解决了sql注入问题,缺点是不支持那些多语句查询执行,不过这种场景本来就不多。

而且,mysql拓展是面向过程的,mysqli拓展和pdo都是是面向对象的。下面用例子说明这种面向过程和面向对象的区别:

1.PHP与Mysql扩展(本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除),PHP原生的方式去连接数据库,是面向过程的:

$mysql_conf = array(

'host' => '127.0.0.1:3306',

'db' => 'test',

'db_user' => 'root',

'db_pwd' => 'root',

);

$mysql_conn = @mysql_connect($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);

if (!$mysql_conn) {

die("could not connect to the database:\n" . mysql_error());//诊断连接错误

}

mysql_query("set names 'utf8'");//编码转化

$select_db = mysql_select_db($mysql_conf['db']);

if (!$select_db) {

die("could not connect to the db:\n" . mysql_error());

}

$sql = "select * from user;";

$res = mysql_query($sql);

if (!$res) {

die("could get the res:\n" . mysql_error());

}

while ($row = mysql_fetch_assoc($res)) {

print_r($row);

}

mysql_close($mysql_conn);

?>

2.PHP与Mysqli扩展,面向对象,但是能看到完整的sql,目前的业务线上php与mysql的连接使用的就是这种拓展。

$mysql_conf = array(

'host' => '127.0.0.1:3306',

'db' => 'test',

'db_user' => 'root',

'db_pwd' => 'joshua317',

);

$mysqli = @new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);

if ($mysqli->connect_errno) {

die("could not connect to the database:\n" . $mysqli->connect_error);//诊断连接错误

}

$mysqli->query("set names 'utf8';");//编码转化

$select_db = $mysqli->select_db($mysql_conf['db']);

if (!$select_db) {

die("could not connect to the db:\n" . $mysqli->error);

}$sql = "select uid from user where name = 'joshua';";

$res = $mysqli->query($sql);

if (!$res) {

die("sql error:\n" . $mysqli->error);

}

while ($row = $res->fetch_assoc()) {

var_dump($row);

}

$res->free();

$mysqli->close();

?>

3.PHP与PDO扩展,面向对象,而且sql语句都是那种明显的结构化的。

$mysql_conf = array(

'host' => '127.0.0.1:3306',

'db' => 'test',

'db_user' => 'root',

'db_pwd' => 'joshua317',

);

$pdo = new PDO("mysql:host=" . $mysql_conf['host'] . ";dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//创建一个pdo对象

$pdo->exec("set names 'utf8'");

$sql = "select * from user where name = ?";

$stmt = $pdo->prepare($sql);

$stmt->bindValue(1, 'joshua', PDO::PARAM_STR);

$rs = $stmt->execute();

if ($rs) {

// PDO::FETCH_ASSOC 关联数组形式

// PDO::FETCH_NUM 数字索引数组形式

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

var_dump($row);

}

}

$pdo = null;//关闭连接

?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP连接MySQL数据库的三种方式分别是PDO、MySQLi和mysql。 PDO(PHP Data Objects)是PHP提供的一种数据库操作扩展,支持多种数据库,其中包括MySQL。PDO提供了一组统一的方法,使开发者能够以同样的方式对待不同的数据库。其优点包括安全性高、可移植性好、支持事务处理等。使用PDO连接MySQL数据库时,需要使用PDO的构造函数new PDO(),并传入相关的连接信息。 MySQLi(MySQL Improved)是PHP中的一种连接MySQL数据库的扩展,是对原有mysql扩展的增强和改进。MySQLi提供了面向对象和面向过程两种API,支持事务处理、预处理语句、存储过程等功能,同时也提供了对MySQL的新特性的支持。使用MySQLi连接MySQL数据库时,首先需要创建一个MySQLi对象,然后调用相应的方法进行连接、查询等操作。 mysql扩展是PHP早期版本提供的一种连接MySQL数据库的方式,但自PHP5.5.0版本开始已被弃用,不再被推荐使用。mysql扩展的连接方式相对简单,使用mysql_connect()函数进行连接,并传入相关的连接参数。然而,mysql扩展存在一些安全性和兼容性的问题,容易受到SQL注入等攻击。 综上所述,PDO、MySQLi和mysqlPHP常用的三种连接MySQL数据库的方式。其中PDO具有较高的安全性和可移植性,使用方式统一;MySQLi支持较多的功能特性,包括事务处理、预处理语句等;mysql扩展已被弃用,不推荐使用。开发者可以根据自己的需求和情况选择合适的连接方式

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值