我从一本书中学到了PHP,它告诉我要使用PDO对象或sql语句(我不确定这是否是正确的术语,如果不是,我很抱歉)。
当我查找sql内容时,很多时候我都看到这样的东西:
$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');但在我的代码和书中,我正在做这样的事情:
global $db;
$query = "SELECT * FROM users WHERE username='$username'";
$results = $db->query($query);
$results = $results->fetch();这两种“样式”有什么区别?
发布于 2013-12-22 04:47:23
首先,mysql_* (如mysql_query、mysql_connect等)的函数被废弃,以后的版本将不支持它。因此,PDO或Mysqli是与数据库通信的首选方式。
PDO准备好的语句用于避免SQL注入攻击。就像在普通的mysql_query中,您将像这样使用
$query = "SELECT * FROM users WHERE username='$username'";
$results = mysql_query($query);但是在PDO中,你必须像这样使用
$params = array(':username' => 'test', ':email' => $mail);
$pdo->prepare('
SELECT * FROM users
WHERE username = :username
AND email = :email');
$pdo->execute($params);因此,PDO是推荐的方式。有关更多细节,请参阅
http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
发布于 2013-12-22 04:51:18
第一种风格是很久以前写的,或者是那些在PHP5出现之前就停止学习PHP的人写的。mysql_query已经过时了,而且已经有一段时间了,您不应该在新的项目中使用它。
第二种是使用PDO,一种较新的数据库API。PDO支持一系列使SQL更容易使用的东西。
尽管如此,它还是很可怕的。大多数人建议使用参数化查询(准备语句的一种形式)将数据与SQL分离。这有助于防止"SQL注入“,在这种过程中,有人向您提供数据,将您的数据库欺骗为执行您从未想过要执行的查询。
https://stackoverflow.com/questions/20726312
复制相似问题