tp切換資料庫
//切換新資料庫
$model=M();
//(sql_type://username:password@address:3306/db_name)
//sql_type:資料庫類型mysql或者mysqli
$result=$model->db(1,"sql_type://username:password@address:3306/db_name");
//sql語句
$query_sql=XXXXXX;
//查詢數據並返回
$data=$result->db(1)->query($query_sql);
『貳』 TP-LINK路由器設置問題
IIS500錯誤,是因為微軟的一個BUG所造成的。下面是解決辦法:
主要是由於IWAM賬號(在我的計算機即是IWAM_MYSERVER賬號)的密碼錯誤造成了HTTP 500內部錯誤。
在詳細分析HTTP500內部錯誤產生的原因之前,先對IWAM賬號進行一下簡要的介紹:IWAM賬號是安裝IIS5時系統自動建立的一個內置賬號,主要用於啟動進程之外的應用程序的Internet信息服務。IWAM賬號的名字會根據每台計算機NETBIOS名字的不同而有所不同,通用的格式是IWAM_MACHINE,即由「IWAM」前綴、連接線「_」加上計算機的NETBIOS名字組成。我的計算機的NETBIOS名字是MYSERVER,因此我的計算機上IWAM賬號的名字就是IWAM_MYSERVER,這一點與IIS匿名賬號ISUR_MACHINE的命名方式非常相似。
IWAM賬號建立後被Active Directory、IIS metabase資料庫和COM+應用程序三方共同使用,賬號密碼被三方分別保存,並由操作系統負責這三方保存的IWAM密碼的同步工作。按常理說,由操作系統負責的工作我們大可放心,不必擔心出錯,但不知是BUG還是其它什麼原因,系統的對IWAM賬號的密碼同步工作有時會失敗,使三方IWAM賬號所用密碼不統一。當IIS或COM+應用程序使用錯誤IWAM的密碼登錄系統,啟動IIS Out-Of-Process Pooled Applications時,系統會因密碼錯誤而拒絕這一請求,導致IIS Out-Of-Process Pooled Applications啟動失敗,也就是我們在ID10004錯誤事件中看到的「不能運行伺服器{3D14228D-FBE1-11D0-995D-00C04FD919C1} 」(這里{3D14228D-FBE1-11D0-995D-00C04FD919C1} 是IIS Out-Of-Process Pooled Applications的KEY),不能轉入IIS5應用程序,HTTP 500內部錯誤就這樣產生了。
解決辦法
手工同步賬號
知道了導致HTTP 500內部錯誤的原因,解決起來就比較簡單了,那就是人工同步IWAM賬號在Active Directory、IIS metabase資料庫和COM+應用程序中的密碼。
具體操作分三步,均需要以管理員身份登錄計算機以提供足夠的操作許可權(IWAM賬號以IWAM_MYSERVER為例)。
(一)更改Active Directory中IWAM_MYSERVER賬號的密碼
因IWAM賬號的密碼由系統控制,隨機產生,我們並不知道是什麼,為完成下面兩步的密碼同步工作,我們必須將IWAM賬號的密碼設置為一個我們知道的值。
1、選擇「開始」->「程序」->「管理工具」->"Active Directory用戶和計算機",啟動「Active Directory用戶和計算機」管理單元。
2、單擊「user」,選中右面的「IWAM_MYSERVER」,右擊選擇「重設密碼(T)...」,在跳出的重設密碼對方框中給IWAM_MYSERVER設置新的密碼,這兒我們設置成「Aboutnt2001」(沒有引號的),確定,等待密碼修改成功。
(二)同步IIS metabase中IWAM_MYSERVER賬號的密碼
可能因為這項改動太敏感和重要,微軟並沒有為我們修改IIS metabase中IWAM_MYSERVER賬號密碼提供一個顯式的用戶介面,只隨IIS5提供了一個管理腳本adsutil.vbs,這個腳本位於C:\\inetpub\\adminscripts子目錄下(位置可能會因你安裝IIS5時設置的不同而有所變動)。
adsutil.vbs腳本功能強大,參數非常多且用法復雜,這里只提供使用這個腳本修改IWAM_MYSERVER賬號密碼的方法:
adsutil SET w3svc/WAMUserPass Password
"Password"參數就是要設置的IWAM賬號的新的密碼。因此我們將IIS metabase中IWAM_MYSERVER賬號的密碼修改為「Aboutnt2001」的命令就是:
c:\\Inetpub\\AdminScripts>adsutil SET w3svc/WAMUserPass "Aboutnt2001"
修改成功後,系統會有如下提示:
WAMUserPass: (String) "Aboutnt2001"
(三)同步COM+應用程序所用的IWAM_MYSERVER的密碼
同步COM+應用程序所用的IWAM_MYSERVER的密碼,我們有兩種方式可以選擇:一種是使用組件服務MMC管理單元,另一種是使用IWAM賬號同步腳本synciwam.vbs。
1、使用組件服務MMC管理單元
(1)啟動組件服務管理單元:選擇「開始」->「運行」->「MMC」,啟動管理控制台,打開「添加/刪除管理單元」對話框,將「組件服務」管理單元添加上。
(2)找到「組件服務」->「計算機」->「我的電腦」->「COM+應用程序」->「Out-Of-Process Pooled Applications」,右擊「Out-Of-Process Pooled Applications」->「屬性」。
(3)切換到「Out-Of-Process Pooled Applications」屬性對話框的「標志」選項卡。「此應用程序在下列賬戶下運行」選擇中「此用戶」會被選中,用戶名是「IWAM_MYSERVER」。這些都是預設的,不必改動。在下面的「密碼」和「確認密碼」文本框內輸入正確的密碼「Aboutnt2001」,確定退出。
(4)系統如果提示「應用程序被一個以上的外部產品創建。你確定要被這些產品支持嗎?」時確定即可。
(5)如果我們在IIS中將其它一些Web的「應用程序保護」設置為「高(獨立的)」,那麼這個WEB所使用的COM+應用程序的IWAM賬號密碼也需要同步。重復(1)-(4)步,同步其它相應Out of process application的IWAM賬號密碼。
2、使用IWAM賬號同步腳本synciwam.vbs
實際上微軟已經發現IWAM賬號在密碼同步方面存在問題,因此在IIS5的管理腳本中單獨為IWAM賬號密碼同步編寫了一個腳本synciwam.vbs,這個腳本位於C:\\inetpub\\adminscripts子目錄下(位置可能會因你安裝IIS5時設置的不同而有所變動)。
synciwam.vbs腳本用法比較簡單:
cscript synciwam.vbs [-v|-h]
「-v」參數表示詳細顯示腳本執行的整個過程(建議使用),「-h」參數用於顯示簡單的幫助信息。
我們要同步IWAM_MYSERVER賬號在COM+應用程序中的密碼,只需要執行「cscript synciwam.vbs -v」即可,如下:
cscript c:\\inetpub\\adminscripts\\synciwam.vbs -v
Microsoft (R) Windows Script Host Version 5.6
版權所有(C) Microsoft Corporation 1996-2000。保留所有權利。
WamUserName:IWAM_MYSERVER
WamUserPass:Aboutnt2001
IIS Applications Defined:
Name, AppIsolated, Package ID
w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}
Root, 2,
IISHelp, 2,
IISAdmin, 2,
IISSamples, 2,
MSADC, 2,
ROOT, 2,
IISAdmin, 2,
IISHelp, 2,
Root, 2,
Root, 2,
Out of process applications defined:
Count: 1
{3D14228D-FBE1-11d0-995D-00C04FD919C1}
Updating Applications:
Name: IIS Out-Of-Process Pooled Applications Key: {3D14228D-FBE1-11D0-995D-00C04FD919C1}
從上面腳本的執行情況可以看出,使用synciwam.vbs腳本要比使用組件服務的方法更全面和快捷。它首先從IIS的metabase資料庫找到IWAM賬號"IWAM_MYSERVER"並取出對應的密碼「Aboutnt2001」,然後查找所有已定義的IIS Applications和Out of process applications,並逐一同步每一個Out of process applications應用程序的IWAM賬號密碼。
使用synciwam.vbs腳本時,要注意一個問題,那就是在你運行synciwam.vbs之前,必須保證IIS metabase資料庫與Active Directory中的IWAM密碼已經一致。因為synciwam.vbs腳本是從IIS metabase資料庫而不是從Active Directory取得IWAM賬號的密碼,如果IIS metabase中的密碼不正確,那synciwam.vbs取得的密碼也會不正確,同步操作執行到「Updating Applications」系統就會報80110414錯誤,即「找不到應用程序{3D14228D-FBE1-11D0-995D-00C04FD919C1}」。
批處理同步
可以用一些BAT來修復這類IE問題的.
好了,到現在為止,IWAM賬號在Active Directory、IIS metabase資料庫和COM+應用程序三處的密碼已經同步成功,你的ASP程序又可以運行了!
把下面的語句復制出來,粘貼到文本文件中.然後把文本文件保存生擴展名為.BAT的文件.例如:ie.bat.雙擊打開該BAT文件.一步步確定到最後.問題就能解決了.
IE.BAT
rem =====第七頻道批處理開始========
rundll32.exe /s advpack.dll /DelNodeRunDLL32 C:\\WINNT\\System32\\dacui.dll
rundll32.exe /s advpack.dll /DelNodeRunDLL32 C:\\WINNT\\Catroot\\icatalog.mdb
regsvr32 /s setupwbv.dll
regsvr32 /s wininet.dll
regsvr32 /s comcat.dll
regsvr32 /s shdoc401.dll
regsvr32 /s shdoc401.dll /i
regsvr32 /s asctrls.ocx
regsvr32 /s oleaut32.dll
regsvr32 /s shdocvw.dll /I
regsvr32 /s shdocvw.dll
regsvr32 /s browseui.dll
regsvr32 /s browseui.dll /I
regsvr32 /s msrating.dll
regsvr32 /s mlang.dll
regsvr32 /s hlink.dll
regsvr32 /s mshtml.dll
regsvr32 /s mshtmled.dll
regsvr32 /s urlmon.dll
regsvr32 /s plugin.ocx
regsvr32 /s sendmail.dll
regsvr32 /s comctl32.dll /i
regsvr32 /s inetcpl.cpl /i
regsvr32 /s mshtml.dll /i
regsvr32 /s scrobj.dll
regsvr32 /s mmefxe.ocx
regsvr32 /s proctexe.ocx mshta.exe /register
regsvr32 /s corpol.dll
regsvr32 /s jscript.dll
regsvr32 /s msxml.dll
regsvr32 /s imgutil.dll
regsvr32 /s thumbvw.dll
regsvr32 /s cryptext.dll
regsvr32 /s rsabase.dll
regsvr32 /s triedit.dll
regsvr32 /s dhtmled.ocx
regsvr32 /s inseng.dll
regsvr32 /s iesetup.dll /i
regsvr32 /s hmmapi.dll
regsvr32 /s cryptdlg.dll
regsvr32 /s actxprxy.dll
regsvr32 /s dispex.dll
regsvr32 /s occache.dll
regsvr32 /s occache.dll /i
regsvr32 /s iepeers.dll
regsvr32 /s wininet.dll /i
regsvr32 /s urlmon.dll /i
regsvr32 /s digest.dll /i
regsvr32 /s cdfview.dll
regsvr32 /s webcheck.dll
regsvr32 /s mobsync.dll
regsvr32 /s pngfilt.dll
regsvr32 /s licmgr10.dll
regsvr32 /s icmfilter.dll
regsvr32 /s hhctrl.ocx
regsvr32 /s inetcfg.dll
regsvr32 /s trialoc.dll
regsvr32 /s tdc.ocx
regsvr32 /s MSR2C.DLL
regsvr32 /s msident.dll
regsvr32 /s msieftp.dll
regsvr32 /s xmsconf.ocx
regsvr32 /s ils.dll
regsvr32 /s msoeacct.dll
regsvr32 /s wab32.dll
regsvr32 /s wabimp.dll
regsvr32 /s wabfind.dll
regsvr32 /s oemiglib.dll
regsvr32 /s directdb.dll
regsvr32 /s inetcomm.dll
regsvr32 /s msoe.dll
regsvr32 /s oeimport.dll
regsvr32 /s msdxm.ocx
regsvr32 /s dxmasf.dll
regsvr32 /s laprxy.dll
regsvr32 /s l3codecx.ax
regsvr32 /s acelpdec.ax
regsvr32 /s mpg4ds32.ax
regsvr32 /s voxmsdec.ax
regsvr32 /s danim.dll
regsvr32 /s Daxctle.ocx
regsvr32 /s lmrt.dll
regsvr32 /s datime.dll
regsvr32 /s dxtrans.dll
regsvr32 /s dxtmsft.dll
regsvr32 /s vgx.dll
regsvr32 /s WEBPOST.DLL
regsvr32 /s WPWIZDLL.DLL
regsvr32 /s POSTWPP.DLL
regsvr32 /s CRSWPP.DLL
regsvr32 /s FTPWPP.DLL
regsvr32 /s FPWPP.DLL
regsvr32 /s FLUPL.OCX
regsvr32 /s wshom.ocx
regsvr32 /s wshext.dll
regsvr32 /s vbscript.dll
regsvr32 /s scrrun.dll mstinit.exe /setup
regsvr32 /s msnsspc.dll /SspcCreateSspiReg
regsvr32 /s msapsspc.dll /SspcCreateSspiReg
rem =====批處理結束========
另:
前面都很順利,但在「開始」->「設置」->「控制面板」->「管理工具」->「組件服務」中,「控制台根
目錄」->「組件服務」->「計算機」-
>「我的電腦」->「COM+應用程序」中,右鍵啟動IIS Out-Of-Process Pooled Applications,發現仍然
報錯,沒辦法重啟IIS,發現問題現象
依舊如故,檢查上面第三個步驟,輸入csript synciwam.vbs -v命令後,返回的腳本執行情況其中最後一
段有一個Error的提示。一段英文,具
體文字描述未能保存下來,意思理解為:IIS的原資料庫拒絕訪問。
4、萬般無奈,刪除IIS的組件包,重新建立之,仍然無效。
至此又出現問題了。
查看應用程序日誌和系統日誌,發現錯誤提示事件ID號依舊為:10010、36、4205
上述的三個步驟中,前面兩步應該都沒有問題,最後一步好象有點問題。
根據事件ID號,查找相關資料,找出解決辦法如下:
在「開始」->「設置」->「控制面板」->「管理工具」->「計算機管理」中,「系統工具」->「本地用戶
和組」->「用戶」裡面,確認IWAM_My
server用戶只在GUEST組內,再在「本地用戶和組」->「組」裡面,右鍵點擊Users組屬性,添加進NT
AUTHORITY\\Authenticated Users和NT
AUTHORITY\\Interactive兩個用戶成員,確定。
重復第三個步驟,即在IIS安裝默認目錄下輸入:c:\\inetpub\\adminscripts> csript synciwam.vbs -v
根據返回的腳本執行情況進行查看,最後那一段的Error已經沒有了,將COM+程序的用戶改回為IWAM用戶
,重新啟動IIS Out-Of-Process
Pooled Applications應用程序,沒有再報錯了,再重啟IIS,檢查所有WEB站點服務,故障現象解除!
也就是說到了這一步IIS下面的ASP程序才正式恢復重新啟動。
至此,故障現象全部排除!
因此,以下幾點需要注意的:
1、事件日誌的空間設置稍微放大一些,默認才512K,根據硬碟空間,適當放大一些,避免出現日誌文件已滿的情況;
2、不要隨便輕易清空事件日誌中的事件記錄,很多故障現象需要從這個裡面下手找原因;
3、所有返回的系統提示信息一定要注意仔細查看;
4、IIS中的應用程序保護應為中或高,如為低,則所有ASP頁面均以本地系統許可權運行,安全性存在問題。
5、COM+程序的用戶許可權和用戶啟動許可權很重要,應注意檢查。
6、系統默認組有時有重要作用,不能輕易刪除或修改。
7、系統重要文件(如SAM)不可輕易刪除,應盡可能採取妥善的解決方法。如使用外部程序修改注冊表或SAM表信息以獲得管理員許可權。而不要刪除該文件。
通過這個問題,偶發現一些看似復雜和不可思議的問題,只要動腦筋,通過仔細查看、分析,再到網上找到一些有關的文章加以對比——但也切忌死搬硬套——找到自己問題的根結所在,再找出相應的解決辦法,問題最終總會迎刃而解。
『叄』 thinkphp如何從模型連接的資料庫切換回原來配置的資料庫連接
翻下TP手冊,其實不需要提問的,既然我回答了,就給我積分吧。
對於默認的資料庫連接,內部的資料庫編號是0,因此為了避免沖突,請不要再次定義資料庫編號為0的資料庫配置
$this->db(0);
『肆』 tp框架,資料庫有一個欄位為json數據,現已用json_decode轉成對象數組了,如何輸出數組里邊的值
你好,提問者:
解決日期取年月日兩種辦法:
一種是在sql查詢資料庫的時候就把日期的格式轉換好;
1
DATE_FORMAT(start_time,'%Y-%m-%d') starttime
一種方法是在你獲取數據的時候轉換
1
SimpleDateFormat sdm = new java.text.SimpleDateFormat("yyyy-MM-dd");
你這樣吧,數據取出來後,用StringBuilder 拼一個json 傳到前台去吧!
給你個例子:
1
2
3
4
5
6
7
8
9
StringBuilder jsonStrAll = new StringBuilder("["); //定義一個StringBuilder
for(employee c : list){//循環你的list
jsonStrAll.append("{"+ "\""+"catid"+"\""+":"+"\""+c.getCatid()+"\""+","+"\""+"catname"+"\""+":"+"\""+c.getCatname()+",isLeaf:true,expanded:false,"+"loaded:true},"); //把你要拼接的欄位放進去
}
String str = jsonStrAll.substring(0, jsonStrAll.length()-1); //把最後的,(逗號)截取掉
if(!"".equals(str)){
str = str+"]"; //加上結尾,json就拼接完了
}
//最後return str ; 就可以了!