Tìm kiếm một từ khóa trong bảng MySql có thể được thực hiện dễ dàng, nhưng việc tìm kiếm một từ khóa trong toàn bộ cơ sở dữ liệu luôn là một nhiệm vụ khó khăn
Hơn nữa, nó đã được coi là một nhu cầu phổ biến đối với nhiều ứng dụng web, đặc biệt đối với tìm kiếm nâng cao như chức năng
Tìm kiếm một từ khóa trong toàn bộ cơ sở dữ liệu trong PHP
Cân nhắc vấn đề này, PHP đã giới thiệu một lớp mới, có tên là “searchEntireDB”
Chỉ cần đưa tệp này vào mã của bạn để thực hiện tìm kiếm một số từ hoặc một số trong toàn bộ cơ sở dữ liệu
Đây là mã cho lớp “searchEntireDB” được lưu dưới dạng searchEntireDB. php
tìm kiếmEntireDB. php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
_dbName = $DB;
$này - >_userName = $userName;
$này - >_passWord = $passWord;
$này - >_columnName = $columnName;
$này - >_văn bản mục tiêu = $targetText;
thử {
$này - >_kết nối = new PDO['mysql: host = localhost; dbname = ' . $này - >_dbName, $this->_userName, $this->_passWord];
$này - >_connection -> exec["SET SESSION collation_connection = 'utf8_general_ci';"];
$này - >_kết nối -> exec["SET CHARACTER SET 'utf8';"];
$này - >_kết nối -> exec["set names utf8"];
}//thử
bắt[ Ngoại lệ $e ] {
die['Lỗi kết nối. '];
}//bắt
searchEntireDB. . searchDB[];
}// __construct[]
hàm công khai searchDB[] {
$này - >_sql = 'SHOW TABLES FROM ' . $này - >_dbName;
$này - >_query = $this->_connection->query[$this->_sql];
$này - >_tableName = $this->_query->fetchAll[];
$số bàn = số lượng[$this->_tableName];
cho [ $i = 0; $i _dbName . . ". " . $này - >_tableName[$i][0];
$query2 = $this->_connection->query[$sql2];
$tìm nạp = $truy vấn2->fetchAll[];
$tempDBName = $này->_tableName[$i][0];
if [ trống[$fetch] ] {
$này - >_báo cáo['emptyDBs'][] = $tempDBName;
}// nếu DB này trống
khác {
$thisArrayIndexes = count[$fetch];
foreach [ $tìm nạp as $key=>$value ] {
if [ is_array[$value] ] {
foreach [ $giá trị as $column=>$fieldValue ] {
if [ $this - >_columnName ! = NULL ] {
$pos = strpos[$fieldValue,$this->_targetText];
if [ $cột == $this->_columnName && $pos !== false ] {
$this->_reports['result'][$tempDBName][$column] = $fieldValue;
$này - >_FinalResult[] = array['DBName'=>$tempDBName, 'ColumnFoundMatch'=>$column, 'searchedFor'=>$fieldValue];
}//Lớp cuối cùng
}//if [ $this->_columnName. = NULL
khác {
if [ strpos[$fieldValue,$this->_targetText] ! == false ] {
if [ is_int[$column] ] {
tiếp tục;
}//ngăn chặn bao gồm các khóa số nguyên trong báo cáo và kết quả
khác {
$này - >_báo cáo['result'][$tempDBName][$column] = $fieldValue;
$này - >_FinalResult[] = array['DBName'=>$tempDBName, 'ColumnFoundMatch'=>$column, 'searchedFor'=>$fieldValue];
}
}//Lớp cuối cùng khi Tên cột là Null
}//IF $this->_columnName [ is ]--> NULL
}//foreach [ $value as $column=>$fieldValue
}//if [ is_array[$value
}//oreach [ $fetch as $key=>$value
$này - >_báo cáo['notEmpty'][] = $tempDBName;
}//else
}//cho
return $this - >_reports;
return $this - >_finalResult;
}//searchDB[]
}//tìm kiếm lớpEntireDb
Và đây là mã ví dụ, cho thấy việc sử dụng lớp trên
1
2
3
4
5
6