2010-05-27 51 views
0

我看到我可以使用函數mysql_client_encoding(...)在PHP中獲得MySQL數據庫定義的編碼,但有沒有辦法在PHP中獲取MySQL表定義的編碼?有沒有辦法在PHP中獲取MySQL表定義的編碼?

+0

你最好意識到,這個信息是完全無用的,可以錯誤的你。 – 2010-05-27 09:17:18

回答

0

我看到沒有簡單的方法來檢索此信息。我能做的最好的是做一個「SHOW CREATE TABLE」並解析答案:

<?php 

$link = mysql_connect('localhost', 'account', 'passwd'); 
mysql_select_db('my_base'); 

$q = mysql_query('show create table my_table;'); 
$row = mysql_fetch_assoc($q); 

preg_match("/CHARSET=(.*)/", $row['Create Table'], $matched); 
echo "Table was created with charset " . $matched[1]; 

這給了我:

Table was created with charset utf8 

請注意,如果你的表不是用這個信息創建的字符集可能不存在。

+0

不錯......非常感謝:) – Brad 2010-05-27 09:12:46

+0

是的,但如果您可以使用不同的字符集或排序規則在表中創建列,那有什麼用?你必須非常愚蠢的依靠這個,請參閱http://dev.mysql.com/doc/refman/5.1/en/charset.html。 – wimvds 2010-05-27 15:08:38

0

我使用SHOW CREATE TABLE查詢,但從來沒有從PHP。
因爲我無法想象我是否需要從PHP運行它。 SET NAMES可以用於任何可能的情況。

請注意,mysql_client_encoding()不返回數據庫編碼。這是客戶端編碼,因爲它說

0

據我所知,編碼在每個數據庫的基礎上定義在My​​SQL中,而不是每個表。

+0

甚至每場。去圖 – 2010-05-27 08:54:30

相關問題