首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO sql语句和普通sql语句的区别是什么?

问PDO sql语句和普通sql语句的区别是什么?
EN

Stack Overflow用户
提问于 2013-12-22 04:39:07
回答 2查看 706关注 0票数 2

我从一本书中学到了PHP,它告诉我要使用PDO对象或sql语句(我不确定这是否是正确的术语,如果不是,我很抱歉)。

当我查找sql内容时,很多时候我都看到这样的东西:

代码语言:javascript
复制
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
if (!mysql_select_db('database_name')) {
    die('Could not select database: ' . mysql_error());
}
$result = mysql_query('SELECT name FROM work.employee');

但在我的代码和书中,我正在做这样的事情:

代码语言:javascript
复制
global $db;
    $query = "SELECT * FROM users WHERE username='$username'";
    $results = $db->query($query);
    $results = $results->fetch();

这两种“样式”有什么区别?

EN

回答 2

Stack Overflow用户

发布于 2013-12-22 04:47:23

首先,mysql_* (如mysql_query、mysql_connect等)的函数被废弃,以后的版本将不支持它。因此,PDO或Mysqli是与数据库通信的首选方式。

PDO准备好的语句用于避免SQL注入攻击。就像在普通的mysql_query中,您将像这样使用

代码语言:javascript
复制
$query = "SELECT * FROM users WHERE username='$username'";
$results = mysql_query($query);

但是在PDO中,你必须像这样使用

代码语言:javascript
复制
$params = array(':username' => 'test', ':email' => $mail);

$pdo->prepare('
   SELECT * FROM users
   WHERE username = :username
   AND email = :email');

$pdo->execute($params);

因此,PDO是推荐的方式。有关更多细节,请参阅

Developers

http://php.net/pdo

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

票数 3
EN

Stack Overflow用户

发布于 2013-12-22 04:51:18

第一种风格是很久以前写的,或者是那些在PHP5出现之前就停止学习PHP的人写的。mysql_query已经过时了,而且已经有一段时间了,您不应该在新的项目中使用它。

第二种是使用PDO,一种较新的数据库API。PDO支持一系列使SQL更容易使用的东西。

尽管如此,它还是很可怕的。大多数人建议使用参数化查询(准备语句的一种形式)将数据与SQL分离。这有助于防止"SQL注入“,在这种过程中,有人向您提供数据,将您的数据库欺骗为执行您从未想过要执行的查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20726312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档