簡體   English   中英

考慮到速度和安全性,從MySQL調用數據的最佳方法是什么?

[英]what is the best way to call data from MySQL with speed and security in mind?

有人可以提供一些建議來構造既快速又安全的MySQL查詢。

目前,我正在使用典型的MySQL調用方法

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

但是我一直在研究OOP數據庫編程,因此我想知道哪種方法最適合在多頁上使用和實現,同時考慮到安全性和速度。

無需花費太多精力的最佳方法就是使用PHP PDO [PHP數據對象]擴展。 這是它的手冊:

http://php.net/manual/zh/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()相比,它確實提高了安全性。

為了安全起見,請始終使用數據庫參數,而不要將用戶提供的內容直接放入查詢中。 您可以使用mysqli_系列函數或PDO對象來完成此操作。

為了提高速度,您應該嘗試盡可能地優化查詢,並嘗試根據需要執行盡可能少的查詢,因為對數據庫的每次命中都會降低應用程序的速度。

PHP> = 5.3中包含的mysqlnd庫比原始的mysqlmysqli庫要快。

安全性是一個更大的難題,但是要牢記的一般原則是永遠不要信任或假設用戶生成的數據是安全的。 在字符串上使用字符串轉義函數; 確保將您期望為整型或浮點型的內容按類型轉換。

通常,很難將最重要的功能結合在一起,PDO提供了數據訪問抽象層,因此您只需編寫一次並在不同數據庫服務器的腳本中使用腳本,但是,PDO的速度並不比MySQLi更快,如此所示。它提供許多其他功能,查詢緩存,准備好的語句,並支持大多數已知的數據庫服務器。

如果您真的在尋找OOP數據庫抽象層,那么請使用PDO,它易於使用,學習迅速。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM