Home  >  Article  >  Backend Development  >  What are the ways to connect to the database in php?

What are the ways to connect to the database in php?

青灯夜游
青灯夜游Original
2019-10-16 14:10:332160browse

There are three API interfaces for the connection between PHP and MySQL, namely: PHP's MySQL extension, PHP's mysqli extension, and PHP data object (PDO). The following is a summary of the above three connection methods to prepare for different scenarios. Choose the best solution.

What are the ways to connect to the database in php?

MySQL extension for PHP is an early extension designed and developed to allow PHP applications to interact with MySQL databases. The MySQL extension provides a procedure-oriented interface and is designed for MySQL 4.1.3 or earlier. Therefore, although this extension can interact with MySQL 4.1.3 or newer database servers, it does not support some features provided by later MySQL servers. Because it is too old and unsafe, it has been completely replaced by the later mysqli;

PHP's mysqli extension, we sometimes call it the MySQL enhanced extension, can be used to use MySQL4.1.3 or new advanced features in newer versions. Its features are: object-oriented interface, prepared statement support, multi-statement execution support, transaction support, enhanced debugging capabilities, embedded service support, and preprocessing methods that completely solve the problem of SQL injection. However, it also has a disadvantage, that is, it only supports mysql database. If you don't operate other databases, this is undoubtedly the best choice.

PDO is the abbreviation of PHP Data Objects, which is a database abstraction layer specification in PHP applications. PDO provides a unified API interface that allows your PHP application to not care about the specific database server system type to be connected. In other words, if you use PDO's API, you can seamlessly switch database servers whenever needed, such as From Oracle to MySQL, only a small amount of PHP code needs to be modified. Its functions are similar to interfaces such as JDBC, ODBC, and DBI. Similarly, it also solves the SQL injection problem and has good security. However, it also has disadvantages. Some multi-statement execution queries are not supported (but this situation is rare).

The official article also makes a list comparison between the three:

PHP’s mysqli extensionPDOMySQL extension for PHP
Introduced PHP version5.05.03.0 Before
Whether PHP5.x contains Yes Yes Yes
MySQL Development Status Active Active in PHP5.3 Maintained only
Suggestions in new MySQL projects Usage levelRecommendation-PreferredRecommendationNot recommended
API character set supportYes YesNo
Support of server-side prepare statementYesYes No
Support of client prepare statementNoYesNo
Stored procedure supportYesYesNo
Multiple statement execution supportYesMostNo
Does all MySQL4.1 or above functions be supported?Yes MostNo

Judging from the official results, msqli is recommended first, followed by PDO. Many of the results given by "folk" tend to use PDO, because it does not have the advantages of cross-database and has the characteristics of fast reading and writing speed.

1. PHP and Mysql extension (this extension has been obsolete since PHP 5.5.0 and will be removed in the future). PHP’s native way to connect to the database is process-oriented

 '127.0.0.1:3306', 
    'db'      => 'test', 
    'db_user' => 'root', 
    'db_pwd'  => 'root', 
    );
$mysql_conn = @mysql_connect($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);
if (!$mysql_conn) {
    die("could not connect to the database:\n" . mysql_error());//诊断连接错误
}
mysql_query("set names 'utf8'");//编码转化
$select_db = mysql_select_db($mysql_conf['db']);
if (!$select_db) {
    die("could not connect to the db:\n" .  mysql_error());
}
$sql = "select * from user;";
$res = mysql_query($sql);
if (!$res) {
    die("could get the res:\n" . mysql_error());
}

while ($row = mysql_fetch_assoc($res)) {
    print_r($row);
}

mysql_close($mysql_conn);
?>

2. PHP and Mysqli extensions, process-oriented and object-oriented

 '127.0.0.1:3306', 
    'db'      => 'test', 
    'db_user' => 'root', 
    'db_pwd'  => 'joshua317', 
    );

$mysqli = @new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);
if ($mysqli->connect_errno) {
    die("could not connect to the database:\n" . $mysqli->connect_error);//诊断连接错误
}
$mysqli->query("set names 'utf8';");//编码转化
$select_db = $mysqli->select_db($mysql_conf['db']);
if (!$select_db) {
    die("could not connect to the db:\n" .  $mysqli->error);
}$sql = "select uid from user where name = 'joshua';";
$res = $mysqli->query($sql);
if (!$res) {
    die("sql error:\n" . $mysqli->error);
}
 while ($row = $res->fetch_assoc()) {
        var_dump($row);
    }

$res->free();
$mysqli->close();
?>

3. PHP and PDO extensions, process-oriented and object-oriented

 '127.0.0.1:3306', 
    'db'      => 'test', 
    'db_user' => 'root', 
    'db_pwd'  => 'joshua317', 
    );
$pdo = new PDO("mysql:host=" . $mysql_conf['host'] . ";dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//创建一个pdo对象
$pdo->exec("set names 'utf8'");
$sql = "select * from user where name = ?";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, 'joshua', PDO::PARAM_STR);
$rs = $stmt->execute();
if ($rs) {
    // PDO::FETCH_ASSOC 关联数组形式
    // PDO::FETCH_NUM 数字索引数组形式
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        var_dump($row);
    }
}

$pdo = null;//关闭连接
?>

For more PHP-related knowledge, please visit php Chinese website!

The above is the detailed content of What are the ways to connect to the database in php?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:How does phpfpm work?Next article:How does phpfpm work?