PHP中mysql、mysqli、pdo的区别和用法
来源:互联网 发布:新疆世纪矩阵合法吗 编辑:程序博客网 时间:2024/05/19 14:18
平时总是用封装的写法写sql,最基本的数据库连接都快忘了怎么写了。现在回头总结一下PHP连接数据库的一些方法和区别:
MySQL 是 PHP 操作 MySQL 数据库最原始的 Extension。MySQLi 的 i 代表 Improvement ,提供了相对进阶的功能,就 Extension 而言,本身也增加了安全性。而 PDO(PHP Data Object)则是提供了一个 Abstraction Layer 来操作数据库,下面贴代码:
<?php$host = '127.0.0.1';$username = 'root';$userpass = '';$databases = 'mytest';$charset = "utf8";$conn = mysql_connect($host, $username, $userpass);if (!$conn) { die('连接失败'.mysql_error());}mysql_set_charset($charset, $conn);//编码要设置的mysql_select_db($databases. $conn);$result = mysql_query("SELECT stu_id, c_name, grade FROM score");$row = mysql_fetch_array($result);
这种方式不能 Bind Column,$location 的地方容易被 SQL 注入。于是后来发展出了 mysql_escape_string()(备注:5.3.0 之后弃用)以及 mysql_real_escape_string() 来解决这个问题,不过这么一搞,整个过程会变得复杂丑陋,而且如果参数多了,可以想象会是怎样的情形……
<?php $query = sprintf("SELECT * FROM score WHERE c_name='%s' AND grade='%s'", mysql_real_escape_string($c_name), mysql_real_escape_string($grade)); mysql_query($query);
在 MySQLi 中有了不少进步,除了通过 Bind Column 来解决上述问题
<?php $conn = new mysqli($host, $username, $userpass, $databases); if (!$conn) { die('连接失败'.mysqli_connect_error());}mysqli_set_charset($conn, $charset);$sql = "INSERT INTO `score` (id, stu_id, c_name, grade) VALUES (?, ?, ?, ?)";$stmt = $conn ->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() . '<br />';
0 0
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中MySQL、MySQLi和PDO的用法和区别
- PHP中mysql、mysqli、pdo的区别和用法
- php 中 mysql和mysqli 还有PDO 关系区别
- php中mysql和mysqli 还有PDO关系区别
- 使用PHP操作mysql和mysqli与PDO的区别
- mysql,mysqli和PDO的区别
- mysql,mysqli和PDO的区别
- mysql,mysqli和PDO的区别
- mysql,mysqli和PDO的区别
- mysql,mysqli和PDO的区别
- struts2入门案例
- python学习笔记(2)
- TCP/IP协议与UDP的区别
- C语言中extern的用法
- 1002. 写出这个数 (20)
- PHP中mysql、mysqli、pdo的区别和用法
- 如何在GitHub上生成ssh公钥并用NetBeans克隆项目
- 华为fx测试题
- 以后看到华为海军的信息,我就记下来
- 第十五届北京师范大学程序设计竞赛决赛(网络同步赛)
- Java集合框架的接口和类层次关系结构图
- python学习笔记
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'hibernate1.user' doesn't exist
- 第三方登录——QQ登录