Giá trị trả về mysqli_connect

❮ Tham chiếu PHP MySQLi

Ví dụ - Kiểu hướng đối tượng

Mở một kết nối mới đến máy chủ MySQL

$mysqli = new mysqli("localhost","my_user","my_password","my_db");

// Kiểm tra kết nối
nếu ($mysqli -> connect_errno) {
echo "Không thể kết nối với MySQL. ". $mysqli -> connect_error;
lối ra();
}
?>


Nhìn vào ví dụ về phong cách thủ tục ở phía dưới


Định nghĩa và cách sử dụng

Hàm connect() / mysqli_connect() mở một kết nối mới tới máy chủ MySQL


cú pháp

Phong cách hướng đối tượng

$mysqli -> mysqli mới (máy chủ, tên người dùng, mật khẩu, dbname, cổng, ổ cắm)

phong cách thủ tục

mysqli_connect(máy chủ, tên người dùng, mật khẩu, dbname, cổng, ổ cắm)

Giá trị tham số

Tham sốMô tảhostTùy chọn. Chỉ định tên máy chủ hoặc địa chỉ IPtên người dùngTùy chọn. Chỉ định tên người dùng MySQLmật khẩuTùy chọn. Chỉ định mật khẩu MySQLdbnameOptional. Chỉ định cơ sở dữ liệu mặc định được sử dụngportOptional. Chỉ định số cổng để cố gắng kết nối với ổ cắm máy chủ MySQLTùy chọn. Chỉ định ổ cắm hoặc đường ống được đặt tên sẽ được sử dụng

chi tiết kỹ thuật

Giá trị trả về. Trả về một đối tượng đại diện cho kết nối đến máy chủ MySQLPhiên bản PHP. 5+

Ví dụ - Kiểu thủ tục

Mở một kết nối mới đến máy chủ MySQL

$con = mysqli_connect("localhost","my_user","my_password","my_db");

// Kiểm tra kết nối
nếu (mysqli_connect_errno()) {
echo "Không thể kết nối với MySQL. ". mysqli_connect_error();
lối ra();
}
?>



❮ Tham chiếu PHP MySQLi

Tôi chắc chắn sẽ không đề xuất mẫu đơn trong trường hợp này và thực tế, trong trường hợp chung, vì nó gây khó khăn cho việc kiểm tra và mở rộng trong nhiều trường hợp và không thể được sử dụng để xử lý nhiều kết nối cùng một lúc, điều này có thể cần thiết tại một số trường hợp

Mẫu đơn chỉ giúp dễ dàng "toàn cầu hóa" kết nối giữa các ứng dụng của bạn và chắc chắn đã trở nên nổi tiếng bởi vì vào thời điểm đó, có nhiều ứng dụng php được viết kém sẽ bắt đầu mọi tập lệnh bằng một kết nối mới dẫn đến nhiều kết nối trùng lặp được mở. Nhưng trên thực tế, điều này thậm chí sẽ được giải quyết tốt hơn bằng cách sử dụng toàn cầu trực tiếp trên đối tượng khi cần thiết hơn là với một singleton. Tất nhiên, tốt nhất là triển khai một số loại tiêm phụ thuộc hoặc mẫu đăng ký để làm như vậy, nhưng tôi nghĩ mẫu singleton nói chung và thậm chí còn hơn thế nữa khi xử lý db nói riêng

Và bạn thậm chí không cần triển khai trình xử lý db của riêng mình hoặc thậm chí sử dụng bất kỳ trình xử lý nào của nhà cung cấp, giống như đã được thực hiện trong ví dụ Doktor OSwaldo, bạn có mọi thứ bạn cần ngay từ PDO

$db = new PDO('mysql:host=localhost;dbname=myDb', 'user', 'pass');

Bạn có thể bọc cái này thành một hàm/phương thức để thao tác kết nối trước khi trả lại hoặc thậm chí triển khai một kho lưu trữ kết nối tối giản

function getConnection($which= 'default') {
    static $connections = [
        // connectionName => connectionOptions
        'default' => [
            'dsn'  => 'mysql:host=localhost;dbname=myDb',
            'user' => 'user',
            'pass' => 'pass',
            // 'option' => value,
            // ...
        ],
        // ...
    ], $dbStore = [];

    if (isset($dbStore[$which])) {
        return $dbStore[$which];
    }

    if (!isset($connections[$which])) {
        throw new \Exception("DB setup not supported");
    }

    $dbStore[$which] = new \PDO($connections[$which]['dsn'], $connections[$which]['user'], $connections[$which]['pass']);

    // eventually set some options that could be stored in $connections[$which]
    // $dbStore[$which]->setAttribute( ...

    return $dbStore[$which];
}

Điều này sẽ mang lại sự dễ sử dụng và đảm bảo chống lại các kết nối trùng lặp giống như một singleton, nhưng vẫn cho phép bạn sử dụng nhiều kết nối cùng một lúc

// get default connection
$defaultDb = getConnection();

// get another connection
$anotherDb = getConnection('another');

Tất nhiên, tốt hơn hết bạn nên lưu trữ các tùy chọn kết nối trong một số loại cấu hình (ví dụ: tìm nạp nó lần đầu tiên getConnection được gọi). Và ví dụ này vẫn không thể kiểm tra một cách lý tưởng (chỉ có điều sự đơn giản của nó khiến nó dễ bị chế giễu), nhưng nó có thể đủ gần như trong nhiều trường hợp

class FooMysqli extends mysqli {
public function __construct($host, $user, $pass, $db, $port, $socket, $charset) {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
parent::__construct($host, $user, $pass, $db, $port, $socket);
$this->set_charset($charset);
}
}

$db = new FooMysqli('localhost', 'my_user', 'my_password', 'my_db', 3306, null, 'utf8mb4');

my_personal_contacts

  • Connected with MySQL by phpMyAdmin, v. v.  
  • Tạo cơ sở dữ liệu có tên my_person_contacts
  • Thi tập lệnh hiển thị bên dưới để tạo bảng và chèn một số dữ liệu demo
  • TẠO BẢNG NẾU KHÔNG TỒN TẠI `my_contacts` (

    `id` int(11) KHÔNG NULL AUTO_INCREMENT,

    `full_names` varchar(255) KHÔNG NULL,

    `giới tính` varchar(6) KHÔNG NULL,

    `contact_no` varchar(75) KHÔNG NULL,

    `email` varchar(255) KHÔNG NULL,

    `city` varchar(255) KHÔNG NULL,

    `quốc gia` varchar(255) KHÔNG NULL,

    ) ENGINE = InnoDB  DEFAULT CHARSET = latin1 AUTO_INCREMENT = 5 ;

    CHÈN VÀO `my_contacts` (

    (1, 'Zeus', 'Nam', '111', 'zeus@olympus. tấn. co', 'Agos', 'Hy Lạp'),

    (2, 'Athena', 'Nữ', '123', 'athena@olympus. tấn. co', 'Athens', 'Hy Lạp'),

    (3, 'Jupiter', 'Nam', '783', 'jupiter@planet. điểm. co', 'Rome', 'Ý'),

    (4, 'Venus', 'Female', '987', 'venu @planet. điểm. co', 'Mars', 'Ý');