一個(gè)可查詢所有表的“通用”查詢分頁類_PHP教程
Jul 21, 2016 pm 04:09 PM
一個(gè)可查詢所有表的“通用”查詢分頁類
最近突發(fā)奇想,希望寫出一個(gè)可以針對所有表的查詢分頁類。因?yàn)樵趯?shí)際的開發(fā)中,恐怕查詢并將結(jié)果集分頁顯示是用得最多的代碼,而表的結(jié)構(gòu)是多樣的,我想盡可能地提高代碼的重用率和維護(hù)性。
以下是我寫的,請各位加以指點(diǎn),測試,看能否進(jìn)行更好的改進(jìn)和更多的支持。
目前還只支持單一的表,不支持聯(lián)合查詢。但未來可以會(huì)考慮如何支持。
代碼:
/****************************************************************
這個(gè)類主要是解決針對很多表的簡單數(shù)據(jù)查詢,還在完善中。希望廣大網(wǎng)友多提意見和建議。
我的目的是開發(fā)出一個(gè)幾乎可以適用于所有mysql表的查詢并將結(jié)果集分頁的類。
可以自動(dòng)識(shí)別查詢中要顯示的字段值。
在此,特別聲明,要感謝chinaunix的朋友,特別是PHP版的網(wǎng)友們長期以來給我的幫助。
特別要提的是NightKids,一直以來,他都給了我無私的幫助,甚至是他的源代碼。
這個(gè)類可以被任何人自由引用,使用,修改。但請保留這段文字。
使用這個(gè)類造成的一切損失,都與作者tonera無關(guān)。
我還在考慮,對于一些復(fù)雜的聯(lián)合查詢,可以派生一個(gè)類,重新構(gòu)造sql實(shí)現(xiàn)。
這個(gè)類沒有考慮更多的顯示風(fēng)格,你可以自己構(gòu)造。
*****************************************************************/
class browser{
? ?var $c_table;? ?//要查詢的表名
? ?var $c_rows;? ?//要顯示的行數(shù)
? ?var $c_lation;? ?//查詢的條件
? ?var $c_order;? ?//排序的條件
? ?var $c_result;? ?//查詢的數(shù)據(jù)連接句柄
? ?var $c_query;? ?//最終構(gòu)造的查詢
? ?var $c_found;? ?//結(jié)果集
? ?var $c_error;? ?//錯(cuò)誤收集器
? ?var $c_offset;? ?//分頁顯示的偏移量
? ?var $total;? ?? ?//結(jié)果集的總數(shù)
? ?//連接數(shù)據(jù)庫
? ?function connect(){
? ?? ?include '../connect.inc.php';
? ?? ?if ($connection==false){
? ?? ?? ?$this->c_error.="沒有連接上數(shù)據(jù)庫。
";
? ?? ?? ?exit;
? ?? ?}
? ?? ?$this->c_result=$connection;
? ?}
? ?//構(gòu)造函數(shù),初始化變量
? ?function browser($tablename,$row,$sql,$lation,$orderby){
? ?? ?$this->c_table=$tablename;
? ?? ?$this->c_rows=$row;
? ?? ?if(empty($this->c_offset)){
? ?? ?? ?$this->c_offset=0;
? ?? ?}
? ?? ?if (empty($tablename) or empty($row) or empty($sql)){
? ?? ?? ?$this->c_error="沒有查詢的表或沒有批定顯示多少行或沒有查詢語句
";
? ?? ?}
? ?? ?$this->c_query=$sql;
? ?? ?if (!empty($lation)){
? ?? ?? ?$this->c_query.=" ".$lation;
? ?? ?}
? ?? ?if (!empty($orderby)){
? ?? ?? ?$this->c_query.=" ".$orderby;
? ?? ?}
? ?}
? ?//計(jì)算總頁數(shù)
? ?function TatolPage(){
? ?? ?$sult=mysql_query("select count(*) as 'total_rows' from $this->c_table",$this->c_result);
? ?? ?if ($sult==false) {
? ?? ?? ?$this->c_error.="計(jì)算結(jié)果集總數(shù)目的查詢失敗,請檢查。
";
? ?? ?? ?exit;
? ?? ?}
? ?? ?$tempvar=mysql_fetch_array($sult);
? ?? ?$this->total=$tempvar[0];
? ?}
? ?//查詢得到結(jié)果集,存入數(shù)組c_found[][]中
? ?function GetFound(){
? ?? ?$sult=mysql_query($this->c_query,$this->c_result) or die(mysql_error());
? ?? ?while ($found=mysql_fetch_array($sult)){
? ?? ?? ?$this->c_found[]=$found;
? ?? ?}
? ?}
? ?//查詢數(shù)據(jù),并將結(jié)果分頁存入一個(gè)變量
? ?function ShowTable(){
? ?? ?$this->connect();
? ?? ?$this->TatolPage();
? ?? ?if (empty($_GET[offset])){
? ?? ?? ?$_GET[offset]=0;
? ?? ?}
? ?? ?$this->c_query.=" limit ".$_GET[offset].", ".$this->c_rows;
? ?? ?$sult=mysql_query($this->c_query,$this->c_result) or die(mysql_error());
? ?? ?//解析query,得到要顯示出來的字段值
? ?? ?$tempvar=explode(" ",$this->c_query);
? ?? ?$fields=explode(",",$tempvar[1]);? ?//字段值(數(shù)組)
? ?? ?//顯示數(shù)據(jù)到一個(gè)表
? ?? ?$echo_content.="
"; ? ?? ?? ?$echo_content.="".$found[1]." | "; ".$found[$i]." | ";||||||||
上頁&"; ? ?? ?}else{ ? ?? ?? ?$echo_content.=" | |||||||||
上頁&"; ? ?? ?} ? ?? ?//顯示頁碼 ? ?? ?for($i=1;$i? ?? ?? ?if ($_GET[offset]/$this->c_rows==($i-1)){ ? ?? ?? ?? ?$echo_content.="&第".$i."頁&"; ? ?? ?? ?}else{ ? ?? ?? ?? ?$echo_content.="&c_rows.">".$i."&"; ? ?? ?? ?} ? ?? ?} ? ?? ?//顯示下一頁 ? ?? ?if ($nex_page!=0 and ($_GET[offset]+$this->c_rows)total){ ? ?? ?? ?$echo_content.="&下頁 |
? ?? ?return $echo_content;
? ?}
}
/*例子
//browser("表名",每頁顯示的數(shù)目,"sql","查詢條件","排序條件");
$gggg=new browser("news",5,"select auto_id,news_title from news","","order by newstime desc");
$temp=$gggg->ShowTable();
echo $temp;
//$gggg->GetFound()是將查詢結(jié)果集存在一個(gè)二維數(shù)組里,本例中沒有用到。
*/
?>

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Laden Sie die neueste Version der Ticketbuchungs-App 12306 herunter, mit der jeder sehr zufrieden ist. Es gibt viele Ticketquellen, die in der Software bereitgestellt werden -Namenauthentifizierung zum Online-Kauf von Tickets. Alle Benutzer k?nnen ganz einfach Reisetickets und Flugtickets kaufen und verschiedene Erm??igungen genie?en. Sie k?nnen auch im Voraus mit der Buchung beginnen, um Tickets zu erhalten. Damit k?nnen Sie mit einem Klick dorthin fahren, wo Sie m?chten, und so das Reisen einfacher und bequemer gestalten Noch komfortabler: Der Herausgeber stellt die Details jetzt online dar. Bietet 12306 Benutzern die M?glichkeit, historische Ticketkaufaufzeichnungen einzusehen. 1. ?ffnen Sie Railway 12306, klicken Sie unten rechts auf ?Mein“ und dann auf ?Meine Bestellung“. 2. Klicken Sie auf der Bestellseite auf ?Bezahlt“. 3. Auf der kostenpflichtigen Seite

MySQL und PL/SQL sind zwei unterschiedliche Datenbankverwaltungssysteme, die die Merkmale relationaler Datenbanken bzw. prozeduraler Sprachen darstellen. In diesem Artikel werden die ?hnlichkeiten und Unterschiede zwischen MySQL und PL/SQL anhand konkreter Codebeispiele zur Veranschaulichung verglichen. MySQL ist ein beliebtes relationales Datenbankverwaltungssystem, das Structured Query Language (SQL) zum Verwalten und Betreiben von Datenbanken verwendet. PL/SQL ist eine für Oracle-Datenbanken einzigartige prozedurale Sprache und wird zum Schreiben von Datenbankobjekten wie gespeicherten Prozeduren, Triggern und Funktionen verwendet. Dasselbe

Wie kann ich meine akademischen Qualifikationen auf Xuexin.com überprüfen? Sie k?nnen Ihre akademischen Qualifikationen auf Xuexin.com überprüfen. Viele Benutzer wissen nicht, wie sie ihre akademischen Qualifikationen auf Xuexin.com überprüfen k?nnen Benutzer kommen vorbei und schauen sich um! Tutorial zur Nutzung von Xuexin.com: So überprüfen Sie Ihre akademischen Qualifikationen auf Xuexin.com 1. Zugang zu Xuexin.com: https://www.chsi.com.cn/ 2. Website-Abfrage: Schritt 1: Klicken Sie auf die Adresse von Xuexin.com Um die Startseite aufzurufen, klicken Sie oben auf [Bildungsabfrage]; Schritt 2: Klicken Sie auf der neuesten Webseite auf [Abfrage], wie durch den Pfeil in der Abbildung unten dargestellt. Schritt 3: Klicken Sie dann auf der neuen Seite auf [Anmelden bei akademischer Kreditdatei]. Schritt 4: Geben Sie auf der Anmeldeseite die Informationen ein und klicken Sie auf [Anmelden].

Wenn Sie das Aktivierungsdatum mit einem Apple-Mobiltelefon überprüfen m?chten, überprüfen Sie es am besten anhand der Seriennummer im Mobiltelefon. Sie k?nnen es auch überprüfen, indem Sie die offizielle Website von Apple besuchen, es an einen Computer anschlie?en und einen Drittanbieter herunterladen Software eines Drittanbieters, um dies zu überprüfen. Wie kann ich das Aktivierungsdatum eines Apple-Mobiltelefons überprüfen? Antwort: Abfrage der Seriennummer, Abfrage der offiziellen Apple-Website, Abfrage der Software eines Drittanbieters 1. Der beste Weg für Benutzer ist, die Seriennummer ihres Mobiltelefons zu kennen Sie k?nnen die Seriennummer sehen, indem Sie ?Einstellungen“, ?Allgemein“, ?über dieses Ger?t“ ?ffnen. 2. Anhand der Seriennummer k?nnen Sie nicht nur das Aktivierungsdatum Ihres Mobiltelefons ermitteln, sondern auch die Mobiltelefonversion, die Herkunft des Mobiltelefons, das Fabrikdatum des Mobiltelefons usw. überprüfen. 3. Benutzer besuchen die offizielle Website von Apple, um technischen Support zu finden, finden die Spalte ?Service und Reparatur“ unten auf der Seite und überprüfen dort die iPhone-Aktivierungsinformationen. 4. Benutzer

Das Forum ist eine der h?ufigsten Website-Formen im Internet. Es bietet Benutzern eine Plattform zum Teilen von Informationen, zum Austauschen und zur Diskussion. Discuz ist ein h?ufig verwendetes Forenprogramm und ich glaube, dass viele Webmaster bereits sehr vertraut damit sind. W?hrend der Entwicklung und Verwaltung des Discuz-Forums ist es h?ufig erforderlich, die Daten in der Datenbank zur Analyse oder Verarbeitung abzufragen. In diesem Artikel geben wir einige Tipps zum Abfragen des Speicherorts der Discuz-Datenbank und stellen spezifische Codebeispiele bereit. Zun?chst müssen wir die Datenbankstruktur von Discuz verstehen

Es gibt zwei g?ngige Methoden zum Paginieren von PHP-Arrays: Verwenden der Funktion array_slice(): Berechnen der Anzahl der zu überspringenden Elemente und Extrahieren des angegebenen Elementbereichs. Verwenden Sie integrierte Iteratoren: Implementieren Sie die Iterator-Schnittstelle, und die Methoden rewind(), key(), current(), next() und valid() werden verwendet, um Elemente innerhalb des angegebenen Bereichs zu durchlaufen.

Wie kann ich den aktuellen Preis von Tongshen Coin überprüfen? Token ist eine digitale W?hrung, die zum Kauf von Gegenst?nden, Diensten und Verm?genswerten im Spiel verwendet werden kann. Es ist dezentralisiert, das hei?t, es wird nicht von Regierungen oder Finanzinstituten kontrolliert. Transaktionen von Tongshen Coin werden auf der Blockchain durchgeführt, einem verteilten Hauptbuch, das die Informationen aller Tongshen Coin-Transaktionen aufzeichnet. Um den aktuellen Token-Preis zu überprüfen, k?nnen Sie die folgenden Schritte ausführen: W?hlen Sie eine zuverl?ssige Website oder App zur Preisprüfung. Zu den h?ufig verwendeten Websites zur Preisabfrage geh?ren: CoinMarketCap: https://coinmarketcap.com/Coindesk: https://www.coindesk.com/ Binance: https://www.bin

Welche Situationen in der Oracle-Datenbank k?nnen dazu führen, dass Tabellen gesperrt werden? In Oracle-Datenbanken kommt es h?ufig vor, dass die Tabelle gesperrt ist, was in der Regel dadurch verursacht wird, dass Benutzer Datenoperationen durchführen. Zu den h?ufigsten Tabellensperrsituationen geh?ren Sperren auf Zeilenebene, Sperren auf Transaktionsebene und DDL-Vorg?nge. Diese Situationen werden im Folgenden ausführlich vorgestellt und entsprechende Codebeispiele gegeben. Sperren auf Zeilenebene: Wenn ein Benutzer eine Tabelle in einer Transaktion aktualisiert, sperrt die Datenbank die entsprechende Datenzeile, um zu verhindern, dass andere Transaktionen gleichzeitig die Daten ?ndern. Wenn die Transaktion nicht erfolgt
