Mysqli có phải là một lớp trong PHP không?

Đây là một Lớp trừu tượng SQL đơn giản tương thích với PHP7+ và PHP 8. 0 cung cấp tương tác _secure_ đơn giản và với cơ sở dữ liệu của bạn bằng cách sử dụng các hàm mysqli_* ở cốt lõi của nó. Điều này là hoàn hảo cho các ứng dụng quy mô nhỏ như công việc định kỳ, chiến dịch canvas facebook hoặc khung hoặc trang web vi mô

Bạn cũng có thể sử dụng. vòng. -lớp "Bản ghi hoạt động đơn giản", nó dựa trên lớp db này và thêm một số cú pháp OOP. Nhưng vui lòng thông báo cho bạn về "Bản ghi hoạt động" so với "Trình ánh xạ dữ liệu" trước khi bạn sử dụng

Nhận "MySQLi đơn giản"

Bạn có thể tải xuống từ đây hoặc yêu cầu sử dụng trình soạn nhạc

  {
      "require": {
        "voku/simple-mysqli": "8.*"
      }
  }

Cài đặt thông qua "yêu cầu nhà soạn nhạc"

  composer require voku/simple-mysqli

Khởi động trình điều khiển

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');

Đa năng && Singleton

Bạn có thể sử dụng

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2DB. getInstance()
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2 mà không có bất kỳ tham số nào và bạn sẽ nhận được kết nối được khởi tạo đầu tiên (dưới dạng "singleton"). Hoặc bạn có thể thay đổi tham số và bạn sẽ tạo một phiên bản "multiton" mới hoạt động giống như một singleton, nhưng bạn cần sử dụng lại các tham số đó, nếu không (không có cùng tham số), bạn sẽ nhận được một phiên bản mới

Doctrine/DBAL làm trình điều khiển chính

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);

Sử dụng lớp "DB"

Có rất nhiều cách sử dụng thư viện này, đây là một số ví dụ về các phương pháp phổ biến nhất

Chọn và truy xuất dữ liệu từ một bảng

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();

Nhưng bạn cũng có thể sử dụng một phương thức cho truy vấn chọn

  $db->select(string $table, array $where); // generate an SELECT query

Thí dụ. LỰA CHỌN

________số 8_______

Here is a list of connectors for the "WHERE"-array: 'NOT', 'IS', 'IS NOT', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'LIKE', 'NOT LIKE', '>', '<', '>=', '<=', '<>', '+', '-'

THÔNG TIN. sử dụng một mảng dưới dạng $value cho "[NOT] IN" và "[NOT] BETWEEN"

THÔNG TIN. sử dụng + / - trong giá trị không có trong khóa của $data

Thí dụ. CẬP NHẬT với "page_template = page_template + 1"

  $where = [
      'page_type LIKE'     => '%foo',
      'page_type NOT LIKE' => 'bar',
  ];
  $data = [
      'page_template' => ['page_template +' => 1],
      'page_type'     => 'lall',
  ];
  $resultSelect = $db->update('page', $data, $where);

Thí dụ. CHỌN với "KHÔNG VÀO"

  $where = [
      'page_type NOT IN' => [
          'foo',
          'bar'
      ],
      'page_id >'        => 2,
  ];
  $resultSelect = $db->select('page', $where);

Thí dụ. CHỌN với Bộ đệm

  $resultSelect = $db->execSQL("SELECT * FROM users", true, 3600);

Kết quả (thông qua $result->fetchAllArray()) chỉ được lưu vào bộ đệm trong 3600 giây khi truy vấn là câu lệnh CHỌN, nếu không, bạn sẽ nhận được kết quả mặc định từ hàm

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2$db->query()
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2

Chèn dữ liệu vào bảng

để thao tác với các bảng, bạn có các phương thức quan trọng nhất, tất cả chúng đều hoạt động theo cùng một cách. phân tích mảng các cặp khóa/giá trị và tạo một truy vấn an toàn

các phương pháp là

  composer require voku/simple-mysqli
0

Tất cả các phương thức sẽ trả về kết quả

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
6 hoặc true/false tùy thuộc vào ngữ cảnh. Cách tiếp cận đúng nếu luôn kiểm tra xem chúng có được thực thi thành công hay không luôn được trả lại

Thí dụ. XÓA BỎ

  composer require voku/simple-mysqli
1

Ghi chú. tất cả các giá trị tham số đều được khử trùng trước khi thực thi, bạn không cần phải thoát các giá trị trước

Thí dụ. CHÈN

  composer require voku/simple-mysqli
2

Thí dụ. THAY THẾ

  composer require voku/simple-mysqli
3

Các tham số ràng buộc trên các truy vấn

Các tham số ràng buộc là một cách tốt để ngăn chặn việc tiêm mysql vì các tham số được khử trùng trước khi thực thi

  composer require voku/simple-mysqli
4

giao dịch

Sử dụng

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
7,
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
8 và
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
9 để quản lý giao dịch

  composer require voku/simple-mysqli
5

Bất kỳ lỗi SQL nào giữa

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
7 và
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
8 sẽ mang lại kết quả
  $db->select(string $table, array $where); // generate an SELECT query
2

Bạn cũng có thể sử dụng phương pháp

  $db->select(string $table, array $where); // generate an SELECT query
3. Điều sau đây tương đương với điều trên

  composer require voku/simple-mysqli
6

Sử dụng lớp "Kết quả"

Sau khi thực hiện một truy vấn

  $db->select(string $table, array $where); // generate an SELECT query
4, bạn nhận được một đối tượng
  $db->select(string $table, array $where); // generate an SELECT query
5 sẽ giúp bạn thao tác với dữ liệu kết quả. có nhiều cách khác nhau để truy cập dữ liệu này, hãy kiểm tra các ví dụ dưới đây

Đang tìm nạp tất cả dữ liệu

  composer require voku/simple-mysqli
7

Tìm nạp tất cả dữ liệu hoạt động như Kết quả. RESULT_TYPE_* phương thức

  $db->select(string $table, array $where); // generate an SELECT query
6 và
  $db->select(string $table, array $where); // generate an SELECT query
7 sẽ trả về giá trị mặc định dựa trên cấu hình
  $db->select(string $table, array $where); // generate an SELECT query
8. các phương pháp khác là

  composer require voku/simple-mysqli
8

Tìm nạp các trường bảng cơ sở dữ liệu

Trả về các hàng thông tin trường trong một tập hợp kết quả

  composer require voku/simple-mysqli
9

Chuyển

  $db->select(string $table, array $where); // generate an SELECT query
9 làm đối số nếu bạn muốn mỗi thông tin trường được trả về dưới dạng một mảng kết hợp thay vì một đối tượng. Giá trị mặc định là trả về từng cái dưới dạng một đối tượng, giống hệt như hàm
  $where = [
      'page_type ='         => 'article',
      'page_type NOT LIKE'  => '%���123',
      'page_id >='          => 2,
  ];
  $articles = $db->select('page', $where);
  
  echo 'There are ' . count($articles) . ' article(s):' . PHP_EOL;
  
  foreach ($articles as $article) {
      echo 'Type: ' . $article['page_type'] . PHP_EOL;
      echo 'ID: ' . $article['page_id'] . PHP_EOL;
  }
0

Đang tìm nạp + Có thể gọi

Tìm nạp một hàng hoặc một cột trong một hàng

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
0

Phương thức này tạo cơ sở cho tất cả các phương thức tìm nạp_. Tất cả các hình thức tìm nạp_ chuyển con trỏ hàng bên trong sang hàng tiếp theo.

  $where = [
      'page_type ='         => 'article',
      'page_type NOT LIKE'  => '%���123',
      'page_id >='          => 2,
  ];
  $articles = $db->select('page', $where);
  
  echo 'There are ' . count($articles) . ' article(s):' . PHP_EOL;
  
  foreach ($articles as $article) {
      echo 'Type: ' . $article['page_type'] . PHP_EOL;
      echo 'ID: ' . $article['page_id'] . PHP_EOL;
  }
1 sẽ được trả về khi không còn hàng nào được tìm nạp

Tìm nạp + Chuyển đổi

Trả về tất cả các hàng cùng một lúc, được chuyển đổi dưới dạng một mảng các mảng

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
1

Hoán vị một tập hợp kết quả gồm X hàng, mỗi hàng có Y cột sẽ dẫn đến một mảng Y hàng, mỗi hàng có X cột

Truyền tên cột làm đối số để trả về mỗi cột dưới dạng một mảng kết hợp với các khóa được lấy từ các giá trị của cột được cung cấp. Nếu không được cung cấp, các phím sẽ là số bắt đầu từ số không

e. g

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
2

Tìm nạp + Cặp

Trả về tất cả các hàng cùng một lúc dưới dạng cặp khóa-giá trị bằng cách sử dụng cột trong đối số đầu tiên làm khóa

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
3

Truyền tên cột làm đối số thứ hai để chỉ trả về một cột duy nhất làm giá trị trong mỗi cặp

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
4

Tìm nạp + Nhóm

Trả về tất cả các hàng cùng một lúc dưới dạng một mảng được nhóm

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
5

Truyền tên cột làm đối số thứ hai để chỉ trả về các cột đơn làm giá trị trong mỗi nhóm

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
6

Đang tìm nạp + đầu tiên

Trả về phần tử hàng đầu tiên từ kết quả

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
7

Truyền tên cột làm đối số để trả về một cột từ hàng đầu tiên

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
8

Đang tìm nạp + lần cuối

Trả về phần tử hàng cuối cùng từ kết quả

  use voku\db\DB;

  require_once 'composer/autoload.php';

  $db = DB::getInstance('yourDbHost', 'yourDbUser', 'yourDbPassword', 'yourDbName');
  
  // example
  // $db = DB::getInstance('localhost', 'root', '', 'test');
9

Truyền tên cột làm đối số để trả về một cột từ hàng cuối cùng

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
0

Đang tìm nạp + lát cắt

Trả về một lát hàng từ kết quả

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
1

Ở trên sẽ trả về 10 hàng bỏ qua hàng đầu tiên. Tham số đầu tiên là phần bù dựa trên số không; . Các phương thức này về cơ bản hoạt động giống như hàm

  $where = [
      'page_type ='         => 'article',
      'page_type NOT LIKE'  => '%���123',
      'page_id >='          => 2,
  ];
  $articles = $db->select('page', $where);
  
  echo 'There are ' . count($articles) . ' article(s):' . PHP_EOL;
  
  foreach ($articles as $article) {
      echo 'Type: ' . $article['page_type'] . PHP_EOL;
      echo 'ID: ' . $article['page_id'] . PHP_EOL;
  }
2 tích hợp sẵn của PHP

Tìm nạp + bản đồ

Đặt chức năng gọi lại trình ánh xạ được sử dụng bên trong phương thức

  $where = [
      'page_type ='         => 'article',
      'page_type NOT LIKE'  => '%���123',
      'page_id >='          => 2,
  ];
  $articles = $db->select('page', $where);
  
  echo 'There are ' . count($articles) . ' article(s):' . PHP_EOL;
  
  foreach ($articles as $article) {
      echo 'Type: ' . $article['page_type'] . PHP_EOL;
      echo 'ID: ' . $article['page_id'] . PHP_EOL;
  }
3

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
2

Ví dụ trên sẽ ánh xạ một hàng (0) từ kết quả vào một đối tượng. Đặt chức năng gọi lại của trình ánh xạ thành null để tắt chức năng này

Tìm nạp + bí danh

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
3

Tìm nạp + Lặp lại

Để lặp lại tập kết quả, bạn có thể sử dụng bất kỳ phương thức tìm nạp () nào được liệt kê ở trên

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
4

Thực hiện nhiều truy vấn

Để thực hiện nhiều truy vấn, bạn có thể sử dụng phương thức

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2$db->multi_query()
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2. Bạn có thể sử dụng nhiều truy vấn được phân tách bằng "
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2;
  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
2"

Return-Types

  • "Kết quả"-Mảng theo truy vấn "CHỌN"
  • "bool" chỉ bằng truy vấn "INSERT"
  • "bool" chỉ bởi (affected_rows) bởi truy vấn "CẬP NHẬT / XÓA"
  • "bool" chỉ bởi e. g. Truy vấn "DROP"

e. g

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
5

Sử dụng lớp "Chuẩn bị"

Các câu lệnh chuẩn bị có lợi thế là chúng được xây dựng cùng nhau trong Máy chủ MySQL, vì vậy hiệu suất tốt hơn

Nhưng việc gỡ lỗi khó hơn và không thể ghi nhật ký (thông qua PHP), vì vậy chúng tôi đã thêm một trình bao bọc cho "bind_param" có tên là "bind_param_debug". Với trình bao bọc này, chúng tôi xây dựng trước truy vấn sql qua php (chỉ để gỡ lỗi/ghi nhật ký). Bây giờ bạn có thể. g. lặp lại truy vấn

THÔNG TIN. Bạn vẫn có thể sử dụng "bind_param" thay vì "bind_param_debug", e. g. nếu bạn cần hiệu suất tốt hơn

CHÈN-Chuẩn bị-Truy vấn (ví dụ)

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
6

CHỌN-Chuẩn bị-Truy vấn (ví dụ)

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
7

Ghi nhật ký và lỗi

Bạn có thể nối vào Lớp "DB", vì vậy bạn có thể sử dụng - Lớp "Logger" cá nhân của mình. Nhưng bạn phải bao gồm các phương pháp

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
8

Bạn cũng có thể tắt tính năng ghi nhật ký của mọi truy vấn sql, với tham số "getInstance()" "logger_level" từ "DB" -Class. Nếu bạn đặt "logger_level" thành thứ gì đó không phải là "TRACE" hoặc "DEBUG", "DB"-Class sẽ chỉ ghi lại các lỗi nữa

  use voku\db\DB;

  require_once 'composer/autoload.php';
  
  $connectionParams = [
      'dbname'   => 'yourDbName',
      'user'     => 'yourDbUser',
      'password' => 'yourDbPassword',
      'host'     => 'yourDbHost',
      'driver'   => 'mysqli', // 'pdo_mysql' || 'mysqli'
      'charset'  => 'utf8mb4',
  ];
  $config = new \Doctrine\DBAL\Configuration();
  $doctrineConnection = \Doctrine\DBAL\DriverManager::getConnection(
      $connectionParams,
      $config
  );
  $doctrineConnection->connect();

  $db = DB::getInstanceDoctrineHelper($doctrineConnection);
9

Hiển thị nhật ký truy vấn. Nhật ký đi kèm với SQL được thực thi, thời gian thực hiện và số lượng hàng kết quả

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
0

Để gỡ lỗi lỗi mysql, hãy sử dụng

  $where = [
      'page_type ='         => 'article',
      'page_type NOT LIKE'  => '%���123',
      'page_id >='          => 2,
  ];
  $articles = $db->select('page', $where);
  
  echo 'There are ' . count($articles) . ' article(s):' . PHP_EOL;
  
  foreach ($articles as $article) {
      echo 'Type: ' . $article['page_type'] . PHP_EOL;
      echo 'ID: ' . $article['page_id'] . PHP_EOL;
  }
8 để tìm nạp tất cả các lỗi (trả về false nếu không có lỗi) hoặc
  $where = [
      'page_type ='         => 'article',
      'page_type NOT LIKE'  => '%���123',
      'page_id >='          => 2,
  ];
  $articles = $db->select('page', $where);
  
  echo 'There are ' . count($articles) . ' article(s):' . PHP_EOL;
  
  foreach ($articles as $article) {
      echo 'Type: ' . $article['page_type'] . PHP_EOL;
      echo 'ID: ' . $article['page_id'] . PHP_EOL;
  }
9 để biết thông tin về lỗi cuối cùng

  use voku\db\DB;
  
  $db = DB::getInstance();
  
  $result = $db->query("SELECT * FROM users");
  $users  = $result->fetchAll();
1

Nhưng cách dễ nhất để gỡ lỗi là cấu hình "DB"-Class thông qua "DB. getInstance()" để hiển thị lỗi và thoát khi có lỗi (xem ví dụ ở trên). Bây giờ bạn có thể thấy các lỗi SQL trong trình duyệt của mình nếu bạn đang làm việc trên "localhost" hoặc bạn có thể triển khai "checkForDev()" của riêng mình thông qua một chức năng đơn giản, bạn không cần phải mở rộng Lớp "Gỡ lỗi". Nếu bạn nhận được thông báo lỗi qua e-mail, bạn có thể triển khai chức năng "mailToAdmin()" của riêng mình thay vì mở rộng Lớp "Gỡ lỗi"

Làm cách nào để tạo một lớp trong MySQLi?

Tạo lớp học. .
Chuẩn bị Tên lớp, biến và hàm của chúng tôi
Thiết lập kết nối MySQL trong hàm tạo
Một Hàm sẽ thực thi tất cả các câu lệnh
Chèn chức năng
Chọn chức năng
Cập nhật chức năng
Xóa chức năng
Tạo/khởi tạo lớp cơ sở dữ liệu

Chức năng MySQLi trong PHP là gì?

Tiện ích mở rộng MySQLi (MySQL được cải tiến) là trình điều khiển cơ sở dữ liệu quan hệ được sử dụng trong ngôn ngữ kịch bản PHP để cung cấp giao diện với cơ sở dữ liệu MySQL . Có ba tùy chọn API chính khi xem xét kết nối với máy chủ cơ sở dữ liệu MySQL. Phần mở rộng MySQL của PHP. Phần mở rộng MySQLi của PHP. Đối tượng dữ liệu PHP (PDO)

Sự khác biệt giữa MySQL và MySQLi là gì?

Về cơ bản, MySQL là trình điều khiển cơ sở dữ liệu cũ và MySQLi là trình điều khiển được cải tiến . Chữ "i" là viết tắt của từ "improved" tức là MySQL đã được cải thiện. MySQLi có thể được thực hiện theo thủ tục và hướng đối tượng trong khi MySQL chỉ có thể được sử dụng theo thủ tục. Mysqli cũng hỗ trợ các câu lệnh đã chuẩn bị để bảo vệ khỏi SQL Injection.

Sự khác biệt giữa MySQLi và PDO trong PHP là gì?

PDO sẽ hoạt động trên 12 hệ thống cơ sở dữ liệu khác nhau, trong khi MySQLi sẽ chỉ hoạt động với cơ sở dữ liệu MySQL . Vì vậy, nếu bạn phải chuyển dự án của mình sang sử dụng cơ sở dữ liệu khác, PDO sẽ giúp quá trình này trở nên dễ dàng. Bạn chỉ phải thay đổi chuỗi kết nối và một vài truy vấn.