首页 > 数据库 > MySQL >

PHP中mysql、mysqli、pdo的区别和用法

2017-04-24

PHP中mysql、mysqli、pdo的区别和用法,平时总是用封装的写法写sql,最基本的数据库连接都快忘了怎么写了。现在回头总结一下PHP连接数据库的一些方法和区别。

PHPmysql、mysqli、pdo的区别和用法,平时总是用封装的写法写sql,最基本的数据库连接都快忘了怎么写了。现在回头总结一下PHP连接数据库的一些方法和区别:
MySQL 是 PHP 操作 MySQL 数据库最原始的 Extension。MySQLi 的 i 代表 Improvement ,提供了相对进阶的功能,就 Extension 而言,本身也增加了安全性。而 PDO(PHP Data Object)则是提供了一个 Abstraction Layer 来操作数据库,下面贴代码:



这种方式不能 Bind Column,$location 的地方容易被 SQL 注入。于是后来发展出了 mysql_escape_string()(备注:5.3.0 之后弃用)以及 mysql_real_escape_string() 来解决这个问题,不过这么一搞,整个过程会变得复杂丑陋,而且如果参数多了,可以想象会是怎样的情形……



在 MySQLi 中有了不少进步,除了通过 Bind Column 来解决上述问题

prepare($sql);
$id = '';
$stu_id = '904';
$c_name = '高数';
$grade = '88';

$stmt->bind_param('dsss', $id, $stu_id, $c_name, $grade);//需要用变量传值
$stmt->execute();
echo $stmt->affected_rows; 

下面是PDO:

$pdo = new PDO("mysql:host=$host;dbname=$databases;charset=utf8", $username, "");
$sql = "INSERT INTO `users` (id, stu_id, c_name, grade) VALUES(?, ?, ?, ?)";  
$sth = $dbh->prepare($sql);  
$sth->execute(array(22, '908', '高数', '76')); 
echo $pdo->lastInsertId() . '
'; 
相关文章
最新文章
热点推荐