讀數(shù)據(jù)庫,以表格輸出的示例代碼:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、羅山網(wǎng)站維護、網(wǎng)站推廣。
?php
header('Content-type:text/html;charset=utf-8');
$db = new mysqli('localhost','root','root','books');
$rows = $db-query('SELECT * FROM customers');
echo 'table border="1"trtd姓名/tdtd年齡/td/tr';
while($row = $rows-fetch_assoc()){
echo 'trtd'.$row['name'].'/td';
echo 'td'.$row['address'].'/td/tr';
}
?
嚴格說來您的主機參數(shù)有點老了。要找到您需要的恐怕比較麻煩,難點在于:
目前Apache版本都是2.0以上
目前php版本都是php 5的
目前的php源碼通常都是和mysql配套的,極少使用SQL Lite。
建議您去搜一個php+access的,或者額外購買數(shù)據(jù)庫。
我手上沒有現(xiàn)成的,要的話也只有臨時寫。
推薦easyphp(如果你用的是windows的話),直接把你的php文件拖到easyphp下的www文件夾下就ok了(如果需要可能會設(shè)置下數(shù)據(jù)庫配置文件之類的)
用sql語句查詢數(shù)據(jù)庫,
ms sql server
1、查詢所有表
select [id], [name] from [sysobjects] where [type] = 'u' order by [name]
2、查詢所有數(shù)據(jù)庫
3、select [name] from [sysdatabases] order by [name]
查詢表中字段
select [name] from [syscolumns] where [name] = 'tableXXX'order by [colid]
oracle
1、查找表的所有索引(包括索引名,類型,構(gòu)成列):
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查詢的表
2、查找表的主鍵(包括名稱,構(gòu)成列):
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查詢的表
3、查找表的唯一性約束(包括名稱,構(gòu)成列):
select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查詢的表
4、查找表的外鍵(包括名稱,引用表的表名和對應(yīng)的鍵名,下面是分成多步查詢):
select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查詢的表
查詢外鍵約束的列名:
select * from user_cons_columns cl where cl.constraint_name = 外鍵名稱
查詢引用表的鍵的列名:
select * from user_cons_columns cl where cl.constraint_name = 外鍵引用表的鍵名
5、查詢表的所有列及其屬性
select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查詢的表
6、查詢所有表
select* from tabs
0×00 開頭照例扯淡
自從各種脫褲門事件開始層出不窮,在下就學(xué)乖了,各個地方的密碼全都改成不一樣的,重要帳號的密碼定期更換,生怕被人社出祖宗十八代的我,甚至開始用起了假名字,我給自己起一新網(wǎng)名”興才”,這個看起來還不錯的名字,其實是我們家鄉(xiāng)罵人土話,意思是腦殘人士…. -_-|||額好吧,反正是假的,不要在意這些細節(jié)。
這只是名,至于姓氏么,每個帳號的注冊資料那里,照著百家姓上趙錢孫李周吳鄭王的依次往下排,什么張興才、李興才、王興才……于是也不知道我這樣”興才”了多久,終于有一天,我接到一個陌生電話:您好,請問是馬興才先生嗎?
好么,該來的終于還是來了,于是按名索驥,得知某某網(wǎng)站我用了這個名字,然后通過各種途徑找,果然,那破站被脫褲子了。
果斷Down了那個褲子,然后就一發(fā)不可收拾,走上了收藏褲子的不歸路,直到有一天,我發(fā)現(xiàn)收藏已經(jīng)非常豐富了,粗略估計得好幾十億條數(shù)據(jù),拍腦袋一想,這不能光收藏啊,我也搭個社工庫用吧……
0×01 介紹
社工庫怎么搭呢,這種海量數(shù)據(jù)的東西,并不是簡單的用mysql建個庫,然后做個php查詢select * from sgk where username like ‘%xxxxx%’這樣就能完事的,也不是某些幼稚騷年想的隨便找個4g內(nèi)存,amd雙核的破電腦就可以帶起來的,上面這樣的語句和系統(tǒng)配置,真要用于社工庫查詢,查一條記錄恐怕得半小時。好在這個問題早就被一種叫做全文搜索引擎的東西解決了,更好的消息是,全文搜索引擎大部分都是開源的,不需要花錢。
目前網(wǎng)上已經(jīng)搭建好的社工庫,大部分是mysql+coreseek+php架構(gòu),coreseek基于sphinx,是一款優(yōu)秀的全文搜索引擎,但缺點是比較輕量級,一旦數(shù)據(jù)量過數(shù)億,就會有些力不從心,并且搭建集群做分布式性能并不理想,如果要考慮以后數(shù)據(jù)量越來越大的情況,還是得用其他方案,為此我使用了solr。
Solr的基礎(chǔ)是著名的Lucene框架,基于java,通過jdbc接口可以導(dǎo)入各種數(shù)據(jù)庫和各種格式的數(shù)據(jù),非常適合開發(fā)企業(yè)級的海量數(shù)據(jù)搜索平臺,并且提供完善的solr cloud集群功能,更重要的是,solr的數(shù)據(jù)查詢完全基于http,可以通過簡單的post參數(shù),返回json,xml,php,python,ruby,csv等多種格式。
以前的solr,本質(zhì)上是一組servlet,必須放進Tomcat才能運行,從solr5開始,它已經(jīng)自帶了jetty,配置的好,完全可以獨立使用,并且應(yīng)付大量并發(fā)請求,具體的架構(gòu)我們后面會講到,現(xiàn)在先來進行solr的安裝配置。
0×02 安裝和配置
以下是我整個搭建和測試過程所用的硬件和軟件平臺,本文所有內(nèi)容均在此平臺上完成:
軟件配置: solr5.5,mysql5.7,jdk8,Tomcat8 Windows10/Ubuntu14.04 LTS
硬件配置: i7 4770k,16G DDR3,2T西數(shù)黑盤
2.1 mysql數(shù)據(jù)庫
Mysql數(shù)據(jù)庫的安裝和配置我這里不再贅述,只提一點,對于社工庫這種查詢?nèi)蝿?wù)遠遠多于插入和更新的應(yīng)用來說,最好還是使用MyISAM引擎。
搭建好數(shù)據(jù)庫后,新建一個庫,名為newsgk,然后創(chuàng)建一個表命名為b41sgk,結(jié)構(gòu)如下:
id bigint 主鍵 自動增長
username varchar 用戶名
email varchar 郵箱
password varchar 密碼
salt varchar 密碼中的鹽或者第二密碼
ip varchar ip、住址、電話等其他資料
site varchar 數(shù)據(jù)庫的來源站點
接下來就是把收集的各種褲子全部導(dǎo)入這個表了,這里推薦使用navicat,它可以支持各種格式的導(dǎo)入,具體過程相當?shù)目菰锓ξ?需要很多的耐心,這里就不再廢話了,列位看官自己去搞就是了,目前我初步導(dǎo)入的數(shù)據(jù)量大約是10億條。
2.2 Solr的搭建和配置
首先下載solr:
$ wget
解壓縮:
$ tar zxvf solr-5.5.0.tgz
安裝jdk8:
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
$ sudo apt-get install oracle-java8-set-default
因為是java跨平臺的,Windows下和linux下solr是同一個壓縮包,windows下jdk的安裝這里不再說明。
進入解壓縮后的solr文件夾的bin目錄,solr.cmd和solr分別是windows和linux下的啟動腳本:
因為社工庫是海量大數(shù)據(jù),而jvm默認只使用512m的內(nèi)存,這遠遠不夠,所以我們需要修改,打開solr.in.sh文件,找到這一行:
SOLR_HEAP=”512m”
依據(jù)你的數(shù)據(jù)量,把它修改成更高,我這里改成4G,改完保存. 在windows下略有不同,需要修改solr.in.cmd文件中的這一行:
set SOLR_JAVA_MEM=-Xms512m -Xmx512m
同樣把兩個512m都修改成4G。
Solr的啟動,重啟和停止命令分別是:
$ ./solr start
$ ./solr restart –p 8983
$ ./solr stop –all
在linux下還可以通過install_solr_service.sh腳本把solr安裝為服務(wù),開機后臺自動運行。
Solr安裝完成,現(xiàn)在我們需要從mysql導(dǎo)入數(shù)據(jù),導(dǎo)入前,我們需要先創(chuàng)建一個core,core是solr的特有概念,每個core是一個查詢、數(shù)據(jù),、索引等的集合體,你可以把它想象成一個獨立數(shù)據(jù)庫,我們創(chuàng)建一個新core:
在solr-5.5.0/server/solr子目錄下面建立一個新文件夾,命名為solr_mysql,這個是core的名稱,在下面創(chuàng)建兩個子目錄conf和data,把solr-5.5.0/solr-5.5.0/example/example-DIH/solr/db/conf下面的所有文件全部拷貝到我們創(chuàng)建的conf目錄中.接下來的配置主要涉及到三個文件, solrconfig.xml, schema.xml和db-data-config.xml。
首先打開db-data-config.xml,修改為以下內(nèi)容:
dataConfig
dataSource name="sgk" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/newsgk" user="root" password="password" batchSize="-1" /
document name="mysgk"
entity name="b41sgk" pk="id" query="select * from b41sgk"
field column="id" name="id"/
field column="username" name="username"/
field column="email" name="email"/
field column="password" name="password"/
field column="salt" name="salt"/
field column="ip" name="ip"/
field column="site" name="site"/
/entity
/document
/dataConfig
這個文件是負責(zé)配置導(dǎo)入數(shù)據(jù)源的,請按照mysql實際的設(shè)置修改datasource的內(nèi)容,下面entity的內(nèi)容必須嚴格按照mysql中社工庫表的結(jié)構(gòu)填寫,列名要和數(shù)據(jù)庫中的完全一樣。
然后打開solrconfig.xml,先找到這一段:
schemaFactory class="ManagedIndexSchemaFactory"
bool name="mutable"true/bool
str name="managedSchemaResourceName"managed-schema/str
/schemaFactory
把它全部注釋掉,加上一行,改成這樣:
!-- schemaFactory class="ManagedIndexSchemaFactory"
bool name="mutable"true/bool
str name="managedSchemaResourceName"managed-schema/str
/schemaFactory--
schemaFactory class="ClassicIndexSchemaFactory"/
這是因為solr5 以上默認使用managed-schema管理schema,需要更改為可以手動修改。
然后我們還需要關(guān)閉suggest,它提供搜索智能提示,在社工庫中我們用不到這樣的功能,重要的是,suggest會嚴重的拖慢solr的啟動速度,在十幾億數(shù)據(jù)的情況下,開啟suggest可能會導(dǎo)致solr啟動加載core長達幾個小時!
同樣在solrconfig.xml中,找到這一段:
searchComponent name="suggest" class="solr.SuggestComponent"
lst name="suggester"
str name="name"mySuggester/str
str name="lookupImpl"FuzzyLookupFactory/str !-- org.apache.solr.spelling.suggest.fst --
str name="dictionaryImpl"DocumentDictionaryFactory/str !-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory --
str name="field"cat/str
str name="weightField"price/str
str name="suggestAnalyzerFieldType"string/str
/lst
/searchComponent
requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"
lst name="defaults"
str name="suggest"true/str
str name="suggest.count"10/str
/lst
arr name="components"
strsuggest/str
/arr
/requestHandler
把這些全部刪除,然后保存solrconfig.xml文件。
接下來把managed-schema拷貝一份,重命名為schema.xml (原文件不要刪除),打開并找到以下位置:
只保留_version_和_root_節(jié)點,然后把所有的field,dynamicField和copyField全部刪除,添加以下的部分:
field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /
field name="username" type="text_ik" indexed="true" stored="true"/
field name="email" type="text_ik" indexed="true" stored="true"/
field name="password" type="text_general" indexed="true" stored="true"/
field name="salt" type="text_general" indexed="true" stored="true"/
field name="ip" type="text_general" indexed="true" stored="true"/
field name="site" type="text_general" indexed="true" stored="true"/
field name="keyword" type="text_ik" indexed="true" stored="false" multiValued="true"/
copyField source="username" dest="keyword"/
copyField source="email" dest="keyword"/
uniqueKeyid/uniqueKey
這里的uniqueKey是配置文件中原有的,用來指定索引字段,必須保留。新建了一個字段名為keyword,它的用途是聯(lián)合查詢,即當需要同時以多個字段做關(guān)鍵字查詢時,可以用這一個字段名代替,增加查詢效率,下面的copyField即用來指定復(fù)制哪些字段到keyword。注意keyword這樣的字段,后面的multiValued屬性必須為true。
username和email以及keyword這三個字段,用來檢索查詢關(guān)鍵字,它們的類型我們指定為text_ik,這是一個我們創(chuàng)造的類型,因為solr雖然內(nèi)置中文分詞,但效果并不好,我們需要添加IKAnalyzer中文分詞引擎來查詢中文。在下載IKAnalyzer for solr5的源碼包,然后使用Maven編譯,得到一個文件IKAnalyzer-5.0.jar,把它放入solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目錄中,然后在solrconfig.xml的fieldType部分加入以下內(nèi)容:
fieldType name="text_ik" class="solr.TextField"
analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/
analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/
/fieldType
保存后,core的配置就算完成了,不過要導(dǎo)入mysql數(shù)據(jù),我們還需要在mysql網(wǎng)站上下載mysql-connector-java-bin.jar庫文件,連同solr-5.5.0/dist目錄下面的solr-dataimporthandler-5.5.0.jar,solr-dataimporthandler-extras-5.5.0.jar兩個文件,全部拷貝到solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目錄中,然后重啟solr,就可以開始數(shù)據(jù)導(dǎo)入工作了。
網(wǎng)頁名稱:php大數(shù)據(jù)查詢系統(tǒng)源碼 php數(shù)據(jù)統(tǒng)計源碼
鏈接分享:http://jinyejixie.com/article18/hpsogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)