关于mysql:使用PHP连接数据库有哪些最安全的方法?

What are some of the safest ways to connect to a database with PHP?

本问题已经有最佳答案,请猛点这里访问。

我对php和mysql还是个新手,我正在尝试用现代的编码技术来学习这两者。我在网上找到的所有东西似乎都过时了。

有人能给我提些建议吗?我也很好奇下面的代码是否过时了?如果它确实过时了,你能建议更新和更安全的方法吗?

1
2
3
4
5
6
<?php
    $connection = mysql_connect("localhost","root","");
    if (!$connection) {
        die("Oops, error happened:" . mysql_error());
    }
?>


使用PDO功能。

使用PDO的数据库连接:

1
$conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);


safest ways to connect to a database with PHP

如果您正在寻找安全的方法,那么您实际上需要从注入中防火查询。MySQL的扩展很快就会被否决,这并不意味着它现在不是safe的扩展,它只是社区放弃了扩展的进一步发展。

您可以同时尝试PDOmysqli进行数据库查询,两者都很好。

您的选择应该取决于您的数据库选择-

PDO支持大约12个不同的驱动程序,而mysqli只支持MySQL

可用PDO驱动程序列表

1
2
3
4
5
6
7
8
9
10
11
12
CUBRID (PDO)
MS SQL Server (PDO)
Firebird/Interbase (PDO)
IBM (PDO)
Informix (PDO)
MySQL (PDO)
MS SQL Server (PDO)
Oracle (PDO)
ODBC and DB2 (PDO)
PostgreSQL (PDO)
SQLite (PDO)
4D (PDO)

源代码-PHP中的PDO驱动程序

API支持

PDOmysqli都提供面向对象的API,但mysqli也提供procedural API


在用PHP访问数据库时,我们现在有两个选择:mysqli和pdo。

要选择要使用的选项,请查看此处!

如果你想知道为什么不应该使用mysql,那就看看这篇文章吧!


是的,您的代码已过时。而mysql_connect、mysql_query等将很快被删除。

基本上有两个选项可供使用:(不安装第三方应用程序)

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

使用mysqli http://php.net/manual/en/book.mysqli.php


首先:

是的,线路已经过时了。

您可以使用与mysql_非常相似的mysqli_*函数来代替。

其次,如果您了解一些面向对象编程的知识,您可以使用PDO,如其他答案中所建议的那样。

最后要提到的是永远不会向用户显示错误消息。他不需要知道出了什么问题,也不需要知道出了什么问题。因此,千万不要用错误消息来说明问题。