Is there a way to get a MySQL table defined encoding in PHP?
I see I can get a MySQL database defined encoding in PHP using the function mysql_client_encoding(...)
, but is th开发者_JAVA百科ere a way to get a MySQL table defined encoding in PHP?
I see no easy way to retrieve this info. The best I could do is to do a "SHOW CREATE TABLE ;" and parse the answer:
<?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];
Which gives me:
Table was created with charset utf8
Note that charset may not be present if your table was not created with this info.
I am using SHOW CREATE TABLE
query, but never from PHP.
Because I can't imagine if I ever need to run it from PHP. SET NAMES
can serve any possible case.
Note that mysql_client_encoding() returns not database encoding. It's client encoding, as it says
As far as I know the encoding is defined on a per database basis in MySQL and not per table.
精彩评论