Hướng dẫn generate ticket number php - tạo số vé php

Tôi đang cố gắng tạo giá trị ID vé với định dạng này: yymm###### sẽ được sử dụng trong bảng cơ sở dữ liệu của tôi. Điều này thể hiện một năm 2 chữ số, tháng 2 chữ số và ID số 6 chữ số duy nhất cho tiền tố tháng năm.

Nếu không có ID vé nào khác cho tháng và năm hiện tại (tháng 4 năm 2017 tại thời điểm đăng), phần số của giá trị phải được mặc định là 000000. ID vé được tạo chính xác, trong trường hợp này, nên là: 1704000000.

Nếu có 1 hoặc nhiều ID vé có sẵn trong tháng hiện tại - thì ID vé mới sẽ nhiều hơn 1 so với ID vé cao nhất.

Tôi hiện đang sử dụng PHP để tăng ID vé như thế này:

$tkid = $rowt["TICKET_ID"] + 1;

Nhưng sử dụng mã này, tạo ID vé như thế này: 17041

Tôi đã đặt các thuộc tính ticket_id của mình cho unsigned zerofilltype int 6.

Do một lý do thiết kế, tôi không muốn sử dụng tự động tăng.auto increment.

Code:

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


Chức năng MySQL (PDO_MYSQL)

Giới thiệu

PDO_MYSQL là một trình điều khiển thực hiện giao diện đối tượng dữ liệu PHP (PDO) để cho phép truy cập từ cơ sở dữ liệu PHP sang MySQL.

PDO_MYSQL sử dụng các chuẩn bị được mô phỏng theo mặc định.

MySQL 8

Khi chạy phiên bản PHP trước 7.1.16 hoặc PHP 7.2 trước 7.2.4, hãy đặt plugin mật khẩu mặc định của máy chủ MySQL 8 thành mysql_native_password nếu không bạn sẽ thấy các lỗi tương tự như phương thức xác thực được yêu cầu Không được sử dụng.

Điều này là do MySQL 8 mặc định là bộ nhớ cache_sha2_password, một plugin không được nhận ra bởi các bản phát hành PHP (MySQLND) cũ hơn. Thay vào đó, hãy thay đổi nó bằng cách đặt

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


0 trong My.cnf. Plugin bộ nhớ cache_sha2_password sẽ được hỗ trợ trong bản phát hành PHP trong tương lai. Trong khi đó, tiện ích mở rộng mysql_xdevapi không hỗ trợ nó.

Cảnh báo

Cẩn thận: Một số loại bảng MySQL (công cụ lưu trữ) không hỗ trợ các giao dịch. Khi viết mã cơ sở dữ liệu giao dịch bằng cách sử dụng loại bảng không hỗ trợ giao dịch, MySQL sẽ giả vờ rằng một giao dịch đã được bắt đầu thành công. Ngoài ra, bất kỳ truy vấn DDL nào được phát hành sẽ hoàn toàn cam kết bất kỳ giao dịch đang chờ xử lý nào.

Ghi chú::

Trình điều khiển MySQL không hỗ trợ đúng

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


1 thông qua pDostatement :: bindparam (); Mặc dù các tham số như vậy có thể được sử dụng, chúng không được cập nhật (nghĩa là đầu ra thực tế bị bỏ qua).
$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


1
via PDOStatement::bindParam(); while such parameters can be used, they are not updated (i.e. the actual output is ignored).

Cài đặt

Các phân phối Unix phổ biến bao gồm các phiên bản nhị phân của PHP có thể được cài đặt. Mặc dù các phiên bản nhị phân này thường được xây dựng với sự hỗ trợ cho các phần mở rộng MYSQL, bản thân các thư viện mở rộng có thể cần được cài đặt bằng một gói bổ sung. Kiểm tra trình quản lý gói đi kèm với phân phối đã chọn của bạn để có sẵn.

Ví dụ: trên Ubuntu, gói

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


2 cài đặt các phần mở rộng PHP EXT/MySQL, EXT/MySQLI và PDO_MYSQL. Trên Centos, gói
$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


3 cũng cài đặt ba phần mở rộng PHP này.

Ngoài ra, bạn có thể tự biên dịch phần mở rộng này. Xây dựng PHP từ nguồn cho phép bạn chỉ định các tiện ích mở rộng MySQL bạn muốn sử dụng, cũng như sự lựa chọn của bạn về thư viện máy khách cho mỗi tiện ích mở rộng.

Khi biên dịch, sử dụng--with-pdo-mysql [= dir] để cài đặt tiện ích mở rộng PDO MySQL, trong đó

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


4 tùy chọn là thư viện cơ sở MySQL. MySQLND là thư viện mặc định. Để biết chi tiết về việc chọn thư viện, hãy xem chọn thư viện MySQL.--with-pdo-mysql[=DIR] to install the PDO MySQL extension, where the optional
$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


4 is the MySQL base library. Mysqlnd is the default library. For details about choosing a library, see Choosing a MySQL library.

Tùy chọn,--with-mysql-sock [= dir] đặt đến vị trí đến con trỏ ổ cắm unix mysql cho tất cả các tiện ích mở rộng MySQL, bao gồm PDO_MYSQL. Nếu không xác định, các vị trí mặc định được tìm kiếm.--with-mysql-sock[=DIR] sets to location to the MySQL unix socket pointer for all MySQL extensions, including PDO_MYSQL. If unspecified, the default locations are searched.

Tùy chọn,--with-zlib-dir [= dir] được sử dụng để đặt đường dẫn đến tiền tố cài đặt libz.--with-zlib-dir[=DIR] is used to set the path to the libz install prefix.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock

Hỗ trợ SSL được bật bằng cách sử dụng các hằng số pdo_mysql thích hợp, tương đương với việc gọi »& nbsp; mysql c chức năng API mySQL_SSL_SET (). Ngoài ra, SSL không thể được bật bằng PDO :: SetAttribution vì kết nối đã tồn tại. Xem thêm Tài liệu MySQL về »& nbsp; kết nối với MySQL với SSL.PDO::setAttribute because the connection already exists. See also the MySQL documentation about » connecting to MySQL with SSL.

Hằng số được xác định trước

Các hằng số bên dưới được xác định bởi trình điều khiển này và sẽ chỉ có sẵn khi phần mở rộng đã được biên dịch thành PHP hoặc được tải động trong thời gian chạy. Ngoài ra, các hằng số dành riêng cho trình điều khiển này chỉ nên được sử dụng nếu bạn đang sử dụng trình điều khiển này. Sử dụng các thuộc tính dành riêng cho trình điều khiển với một trình điều khiển khác có thể dẫn đến hành vi bất ngờ. PDO :: GetAttribution () có thể được sử dụng để có được thuộc tính

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


5 để kiểm tra trình điều khiển, nếu mã của bạn có thể chạy đối với nhiều trình điều khiển.PDO::getAttribute() may be used to obtain the
$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


5
attribute to check the driver, if your code can run against multiple drivers.

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


6 (int) Nếu thuộc tính này được đặt thành
$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


7 trên pdostatement, trình điều khiển MySQL sẽ sử dụng các phiên bản đệm của API MySQL. Nếu bạn đang viết mã di động, bạn nên sử dụng pdostatement :: fetchall () thay vào đó.
(int) If this attribute is set to
$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


7
on a PDOStatement, the MySQL driver will use the buffered versions of the MySQL API. If you're writing portable code, you should use PDOStatement::fetchAll() instead.

Ví dụ #1 buộc các truy vấn phải được đệm trong MySQL

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


8

$sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' ";
$ticket = mysqli_query($conn , $sqlt);
$rowcount = mysqli_num_rows($ticket);
if ($rowcount == 0)
    echo "No records found";
else 
    {
    $rowt = mysqli_fetch_assoc($ticket);
    }
$tkid = $rowt["TICKET_ID"] + 1;


9 (int)
(int)

Bật

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
0.

Lưu ý, hằng số này chỉ có thể được sử dụng trong mảng

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
1 khi xây dựng một tay cầm cơ sở dữ liệu mới.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
2 (chuỗi)
(string)

Cho phép hạn chế tải dữ liệu cục bộ vào các tệp nằm trong thư mục được chỉ định này. Có sẵn là Php 8.1.0.

Lưu ý, hằng số này chỉ có thể được sử dụng trong mảng

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
1 khi xây dựng một tay cầm cơ sở dữ liệu mới.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
2 (chuỗi)
(string)

Lệnh để thực thi khi kết nối với máy chủ MySQL. Sẽ tự động được thực hiện lại khi kết nối lại.

Lưu ý, hằng số này chỉ có thể được sử dụng trong mảng

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
1 khi xây dựng một tay cầm cơ sở dữ liệu mới.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
6 (int)
(int)

Đọc các tùy chọn từ tệp tùy chọn được đặt tên thay vì từ My.cnf. Tùy chọn này không khả dụng nếu MySQLND được sử dụng, vì MySQLND không đọc các tệp cấu hình MySQL.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
7 (int)
(int)

Đọc các tùy chọn từ nhóm được đặt tên từ My.cnf hoặc tệp được chỉ định với

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
8. Tùy chọn này không khả dụng nếu MySQLND được sử dụng, vì MySQLND không đọc các tệp cấu hình MySQL.
$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
8
. This option is not available if mysqlnd is used, because mysqlnd does not read the mysql configuration files.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
9 (int)
(int)

Kích thước bộ đệm tối đa. Mặc định là 1 MIB. Hằng số này không được hỗ trợ khi được tổng hợp với MySQLND.

yymm######0 (int) (int)

Thực hiện các truy vấn trực tiếp, không sử dụng các câu lệnh đã chuẩn bị.

yymm######1 (int) (int)

Trả về số lượng hàng được tìm thấy (phù hợp), không phải số lượng hàng đã thay đổi.

yymm######2 (int) (int)

Cho phép không gian sau tên chức năng. Làm cho tất cả các chức năng Tên từ dành riêng.

yymm######3 (int) (int)

Bật nén giao tiếp mạng.

yymm######4 (int) (int)

Đường dẫn tệp đến Cơ quan chứng chỉ SSL.

yymm######5 (int) (int)

Đường dẫn tệp đến thư mục chứa chứng chỉ SSL CA đáng tin cậy, được lưu trữ ở định dạng PEM.

yymm######6 (int) (int)

Đường dẫn tệp đến chứng chỉ SSL.

yymm######7 (int) (int)

Danh sách một hoặc nhiều mật mã được phép sử dụng để mã hóa SSL, theo định dạng được OpenSSL hiểu. Ví dụ: yymm######8

yymm######9 (int) (int)

Đường dẫn tệp đến khóa SSL.

0000000 (int) (int)

Cung cấp một cách để vô hiệu hóa xác minh chứng chỉ SSL của máy chủ.

Điều này tồn tại kể từ Php 7.0,18 và PhP 7.1.4.

0000001 (int) (int)

Vô hiệu hóa thực thi nhiều truy vấn trong cả PDO :: PREPARE () và PDO :: Truy vấn () khi được đặt thành 0000002.PDO::prepare() and PDO::query() when set to 0000002.

Lưu ý, hằng số này chỉ có thể được sử dụng trong mảng

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
1 khi xây dựng một tay cầm cơ sở dữ liệu mới.

Cấu hình thời gian chạy

Hành vi của các chức năng này bị ảnh hưởng bởi các cài đặt trong php.ini.

Tùy chọn cấu hình PDO_MYSQL
TênMặc địnhCó thể thay đổi
pdo_mysql.default_socket"/tmp/mysql.sock"PHP_ini_System
pdo_mysql.debugVÔ GIÁ TRỊPHP_ini_System

pdo_mysql.debug

VÔ GIÁ TRỊ

Để biết thêm chi tiết và định nghĩa của các chế độ PHP_INI_*, hãy xem nơi cài đặt cấu hình có thể được đặt.string

Đây là một lời giải thích ngắn về các chỉ thị cấu hình.

Chuỗi 0000004bool

Đặt ổ cắm miền UNIX. Giá trị này có thể được đặt tại thời điểm biên dịch nếu tìm thấy ổ cắm miền ở cấu hình. Cài đặt INI này chỉ là Unix.

0000005 BOOL

  • Cho phép gỡ lỗi cho PDO_MYSQL. Cài đặt này chỉ khả dụng khi PDO_MYSQL được biên dịch với MYSQLND và trong chế độ gỡ lỗi PDO.

Mục lục

PDO_MYSQL DSN - Kết nối với cơ sở dữ liệu MySQL

0000006

0000007

0000008

0000009

Brian tại Diamondsea Dot Com ¶

14 năm trước

17040000000

17040000001

0000009

Davey tại php dot net ¶

15 năm trước

17040000003

17040000004

0000009

Curt tại webmasterbond dot com

PDO_MYSQL DSN - Kết nối với cơ sở dữ liệu MySQL

17040000006

17040000007

17040000008

17040000009

170410

170411

170412

170413

170414

0000009

Brian tại Diamondsea Dot Com ¶

PDO_MYSQL DSN - Kết nối với cơ sở dữ liệu MySQL

170416

170417

170418

170419

ticket_id0

ticket_id1

ticket_id2

0000009

Brian tại Diamondsea Dot Com ¶

14 năm trước

ticket_id4

ticket_id5

ticket_id6

ticket_id7

ticket_id8

ticket_id9

unsigned zerofill0

unsigned zerofill1

unsigned zerofill2

0000009

Davey tại php dot net ¶

15 năm trước

unsigned zerofill4