I see i can get a MySQL database defined encoding in PHP using the function mysql_client_encoding(...)
, but is there a way to get a MySQL table defined encoding in PHP ?
views:
31answers:
3
A:
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
Col. Shrapnel
2010-05-27 08:52:22
A:
As far as I know the encoding is defined on a per database basis in MySQL and not per table.
bogdanvursu
2010-05-27 08:53:54
even per field. Go figure
Col. Shrapnel
2010-05-27 08:54:30
A:
Hi, 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.
Patrick MARIE
2010-05-27 08:53:58