在考虑速度和安全性的情况下,从MySQL调用数据的最佳方法是什么?

时间:2011-05-15 18:40:01

标签: php mysql

有些人提供了构建既快又安全的MySQL查询的一些建议。

目前我使用的是典型的MySQL调用方法

$q = ("...");
$r = mysql_query($q);

但我正在研究OOP数据库编程,所以我想知道哪种方法最好在多个页面上使用和实现,并考虑到安全性和速度。

4 个答案:

答案 0 :(得分:5)

不费吹灰之力的最佳方法是使用PHP PDO [PHP Data Object]扩展。这是手册:

http://php.net/manual/en/book.pdo.php

示例:

<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

你应该学习“预备语句”的想法 - 与mysql_query()方式相比,它确实提高了安全性。

答案 1 :(得分:2)

出于安全考虑,请始终使用数据库参数,而不是直接在查询中放置用户提供的内容。您可以通过使用mysqli_函数系列或PDO对象来完成此操作。

为了提高速度,您应该尽可能地尝试优化查询,并尝试根据需要执行少量查询,因为每次点击数据库都会降低应用程序的速度。

答案 2 :(得分:1)

PHP&gt; = 5.3中包含的mysqlnd库比原来的mysqlmysqli库快。

安全是一个更大的蜡球,但要​​记住的一般原则是不要相信或假设用户生成的数据是安全的。在字符串上使用字符串转义函数;确保你期望的整体或浮动的东西都是这样的。

答案 3 :(得分:0)

一般认为很难将最重要的功能组合在一起,PDO提供数据访问抽象层,因此您只需编写一次并将脚本与不同的数据库服务器一起使用,但是,PDO并不比MySQLi更快,因为它是基准{ {3}}显示,但它提供了许多其他功能,查询缓存,预准备语句,并支持大多数已知的数据库服务器。

如果您真的在寻找OOP数据库抽象层,那么使用PDO,易于使用,快速学习。