本人對資料庫基本小白,PHP也是新手。現在用PDO遠端存取oracle資料庫時,表頭是中文的,查詢時就不出結果。比如$sql=select * from aaa where 站號= 1234 ; 返回是undefined index ......
求解。。。謝謝各位
回複討論(解決方案)
你的表是用中文做檔案名稱的嗎?
列印出不加過濾條件時的查詢結果(片段即可)
你的表是用中文做檔案名稱的嗎?
列印出不加過濾條件時的查詢結果(片段即可)
表名是英文,猜測可能是字元集的問題。執行select userenv('language') from dual後顯示的是SIMPLIFIED CHINESE_CHINA.ZHS16GBK
用print_r列印了一個結果:
Array
(
[ID] => 7883
[???] => 3
[??] => ?
[????] => 0
)
怎麼辦啊大神?
噢,我問錯了
你的欄位名顯然是中文的,這個就很麻煩了
你最好在控制台把欄位名改成英文的
噢,我問錯了
你的欄位名顯然是中文的,這個就很麻煩了
你最好在控制台把欄位名改成英文的
改不了啊大神,這個庫不是我的,而且已經投入使用了,想改人家也不能同意。怎麼辦啊。。。
你的 dsn 是怎麼寫的?
new PDO('oci:dbname=//伺服器名或ip:1521/執行個體名; charset=zhs16gbk', '使用者名稱', '口令');
這個一定要有
因為你的欄位名是中文的,所以字元集一定不能搞錯
你若需要頁面是 utf-8 的,那麼只能讀取後轉碼了
如果將中文欄位名改成西文的,那麼倒是可以改變 charset 來擷取相應編碼的資料
你的 dsn 是怎麼寫的?
new PDO('oci:dbname=//伺服器名或ip:1521/執行個體名; charset=zhs16gbk', '使用者名稱', '口令');
這個一定要有
因為你的欄位名是中文的,所以字元集一定不能搞錯
你若需要頁面是 utf-8 的,那麼只能讀取後轉碼了
如果將中文欄位名改成西文的,那麼倒是可以改變 charset 來擷取相應編碼的資料
加了這句charset=zhs16gbk 出結果了!謝謝斑竹指導!
斑竹再請教一個問題,我想把查詢結果轉存到utf8的mysql,轉碼是哪個函數呀?