2015-04-11 2 views
-1

Я использую mysqli_fetch_field_direct на MySQL, чтобы получить длину поля, используя:mysqli_fetch_field_direct неправильный результат

$tab_field = mysqli_fetch_field_direct($result_fields,$j); 
$long = $tab_field->length; 

После создания VARCHAR (100) под PhpMyAdmin, я вернулся 100 в моей длины VARCHAR, который был правильным.

Теперь я использую MariaDB и тот же вызов mysqli_fetch_field_direct для того же поля, дайте мне 300. Я согласен с тем, что, согласно кодировке, возможно, это «внутренний размер», но мне нужно знать количество символов, которое я могу положить, поэтому мне нужно вернуть «100». Я заметил, что PhpMyAdmin возвращает 100, когда показывает «структуру» таблицы, но, похоже, использует SHOW-запрос, а не fetch_field_direct.

Любая идея?

ответ

0

Посмотрим SHOW CREATE TABLE. Я предполагаю, что столбец объявлен CHAR(100)? А старая версия была CHARACTER SET latin1? А MariaDB был CHARACTER SET utf8?

В целом VARCHAR является предпочтительным по сравнению с CHAR. (Вы обнаружили по одной причине.)

Обычно utf8 в настоящее время является предпочтительным.

+0

Ну, на самом деле, я решил использовать select * from information_schema.COLUMNS, где table_name = 'XXX'. Я получаю размер, который я хотел (100) в CHARACTER_MAXIMUM_LENGTH, и размер, который я получаю от mysqli_fetch_field_direct в CHARACTER_OCTET_LENGTH. С самого начала (MySQL) я использовал utf8. – Peter

Смежные вопросы