Three ways for PHP to connect to MySQL database (mysql, mysqli, pdo)

Three ways for PHP to connect to MySQL database (mysql, mysqli, pdo)

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). Excellent solution.

The MySQL extension for PHP is an early extension designed 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 the MySQL 4.1.3 or newer database server, it does not support some features provided by the later MySQL server. Because it is too old and insecure, it has been completely replaced by the later mysqli;

The mysqli extension for PHP, which we sometimes call the MySQL enhancement extension, can be used to use the new advanced features in MySQL 4.1.3 or later. Its characteristics are: object-oriented interface, prepared statement support, multi-statement execution support, transaction support, enhanced debugging capability, embedded service support, and preprocessing method, which completely solves the problem of sql injection. However, it also has the disadvantage that it only supports the mysql database. If you do not 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 type of database server system to be connected to. That is, if you use PDO's API, you can seamlessly switch database servers whenever needed, such as From Oracle to MySQL, only a few PHP code changes are required. Its function is similar to JDBC, ODBC, DBI and other interfaces. Similarly, it also solves the problem of sql injection and has good security. However, it also has shortcomings, some multi-statement execution queries are not supported (but this is rarely the case).

The official text also makes a tabular comparison between the three:

  mysqli extension for PHP PDO mysql extension for PHP
Introduced PHP version 5.0 5.0 Before 3.0
Does PHP5.x contain Yes Yes Yes
MySQL development status active Active in PHP5.3 maintenance only
Recommended usage in new MySQL projects Recommended - Preferred suggestion not suggested
Character set support for the API Yes Yes no
Server-side prepare statement support Yes Yes no
Client prepare statement support no Yes no
Stored procedure support Yes Yes no
Multi-statement execution support Yes most no
Whether to support all functions above MySQL 4.1 Yes most no

 

Judging from the official results, mysqli 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 abandoned since PHP 5.5.0 and will be removed in the future), PHP's native way to connect to the database is process-oriented

copy code
<?php
$mysql_conf = array(
    'host'    => '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);
?>
copy code

 

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

copy code
<?php
$mysql_conf = array(
    'host'    => '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();
?>
copy code

 

 

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

copy code
<?php
$mysql_conf = array(
    'host'    => '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 associative array form
    // PDO::FETCH_NUM numeric indexed array form 
    while ( $row = $stmt ->fetch(PDO:: FETCH_ASSOC)) {
         var_dump ( $row );
    }
}

$pdo = null ; // Close the connection 
?>

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324609308&siteId=291194637