views:

31

answers:

3

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 ?

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
A: 

As far as I know the encoding is defined on a per database basis in MySQL and not per table.

bogdanvursu
even per field. Go figure
Col. Shrapnel
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
Nice ... Thanks a lot :)
Brad
Yeah but what's the use if you can create columns inside that table using a different character set or collation? You'd have to be very stupid to rely on this, see http://dev.mysql.com/doc/refman/5.1/en/charset.html.
wimvds