PDO讀oracle中文查詢問題

來源:互聯網
上載者:User
本人對資料庫基本小白,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,轉碼是哪個函數呀?

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.