有些人提供了构建既快又安全的MySQL查询的一些建议。
目前我使用的是典型的MySQL调用方法
$q = ("...");
$r = mysql_query($q);
但我正在研究OOP数据库编程,所以我想知道哪种方法最好在多个页面上使用和实现,并考虑到安全性和速度。
答案 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
库比原来的mysql
和mysqli
库快。
安全是一个更大的蜡球,但要记住的一般原则是不要相信或假设用户生成的数据是安全的。在字符串上使用字符串转义函数;确保你期望的整体或浮动的东西都是这样的。
答案 3 :(得分:0)
一般认为很难将最重要的功能组合在一起,PDO提供数据访问抽象层,因此您只需编写一次并将脚本与不同的数据库服务器一起使用,但是,PDO并不比MySQLi更快,因为它是基准{ {3}}显示,但它提供了许多其他功能,查询缓存,预准备语句,并支持大多数已知的数据库服务器。
如果您真的在寻找OOP数据库抽象层,那么使用PDO,易于使用,快速学习。