Объявите переменную PHP с длиной, как мы делаем в базе данных char (10) - PullRequest
2 голосов
/ 11 ноября 2010

Можем ли мы объявить переменную с фиксированной длиной в PHP?

Я не спрашиваю об обрезке или помещая условие в подстроку.

Можем ли мы объявить переменную так же, как в базе данных char (10).

Причина, по которой я спрашиваю, - это процесс экспорта, PHP экспортирует данные в БД.

В БД у меня есть поле размером 100, и я передаю поле сдлина 25, с использованием PHP.

Когда я смотрю в БД, он показывает дополнительное пространство для этого поля.

Ответы [ 6 ]

3 голосов
/ 11 ноября 2010

Возможно, это проблема вашей базы данных.

Тип данных CHAR всегда заполняет оставшиеся неиспользуемые символы при сохранении данных.Если у вас есть CHAR (3) и вы передаете 'hi', он будет сохранен как 'hi '.Это справедливо для многих механизмов реляционных баз данных (MySQL, Postgres, SQLite и т.В этом случае содержимое не заполняется пробелами, если данные, хранящиеся в нем, недостаточно длинные.

В большинстве случаев вы ищете тип данных VARCHAR.CHAR в основном используется, когда вы храните коды и т. Д., Которые всегда имеют одинаковую длину (например, поле CHAR (3) для хранения кодов, таких как ADD, DEL, CHG, FIX и т. Д.).

1 голос
/ 11 ноября 2010

Неа.В PHP нет положений, ограничивающих размер строки.

Вы можете смоделировать что-либо в объекте, используя переменные-установщики и переменные-получатели , однако, выбрасывая ошибку (или обрезая данные), если поступающее значениебольше допустимого.

1 голос
/ 11 ноября 2010

Нет, string в PHP всегда переменной длины. Вы можете обрезать строку, чтобы увидеть, передается ли дополнительное пространство в вашу БД.

0 голосов
/ 15 ноября 2010

Если вы хотите хранить строки переменной длины в DB2, тогда используйте VARCHAR. Если вы хотите, чтобы для каждой строки в столбце всегда была одинаковая длина, определите точную длину, используя CHAR (например, для почтовых индексов).

Подробная информация о символьных строках доступна здесь: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0008470.html с хорошим резюме:

Строка символов фиксированной длины (CHAR)

Все значенияв столбце строки фиксированной длины имеют одинаковую длину, которая определяется атрибутом длины столбца.Атрибут длины должен быть в диапазоне от 1 до 254. Включительно.

Символьные строки переменной длины Существует два типа символьных строк различной длины:

  • AЗначение VARCHAR может быть длиной до 32 672 байта.
  • Значение CLOB (большой символьный объект) может быть длиной до 2 гигабайт минус 1 байт (2 147 483 647 байтов).

Конечнозатем он становится более подробным, в зависимости от того, какую кодировку вы используете и т. д. (например, UTF-16 или UTF-32)

0 голосов
/ 11 ноября 2010

Как говорили другие: нет.

Я не понимаю, как это все равно поможет.Я не знаком с DB2, но, похоже, если у вас есть лишние пробелы, они либо входят в переменную (и, следовательно, она должна быть обрезана), либо DB2 делает пробел, чтобы значение имело 100 символов.Если ваш ввод длиной всего 25 символов, то, если он выполняет пробел, кажется, он все равно это сделает.

0 голосов
/ 11 ноября 2010

Нет, но я действительно не думаю, что у вас проблемы с php. Я думаю, вам следует проверить конфигурацию DB2, возможно, она автоматически завершает строки с пробелами ... Сколько пробелов добавлено? Они добавлены раньше? После

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...