代码之家  ›  专栏  ›  技术社区  ›  zod

像在数据库char(10)中那样声明一个长度为的PHP变量

  •  2
  • zod  · 技术社区  · 14 年前

    我们可以在PHP中声明一个固定长度的变量吗?

    我不是在问修剪或者通过放置条件do substring。

    我们能像数据库char(10)那样声明变量吗。

    我问的原因是做一个导出过程,PHP将数据导出到DB。

    在DB中,我有一个大小为100的字段,我正在使用PHP传递一个长度为25的字段。

    当我查看数据库时,它显示了该字段的一些额外空间。

    6 回复  |  直到 12 年前
        1
  •  3
  •   netcoder    14 年前

    也许是你的数据库出了问题。

    在存储数据时,CHAR数据类型将始终填充剩余的未使用字符。如果你有CHAR(3)和pass 'hi' ,它将存储为 'hi ' . 很多关系数据库引擎(MySQL、Postgres、SQLite等)都是如此。

    这就是为什么一些数据库引擎也有VARCHAR数据类型(如名称所示,VARCHAR是变量)。如果存储的数据不够长,这个文件不会用空格填充内容。

    在大多数情况下,您正在寻找VARCHAR数据类型。CHAR在存储总是具有相同长度的代码等时最有用(例如:CHAR(3)字段,用于存储ADD、DEL、CHG、FIX等代码)。

        2
  •  1
  •   Pablo Santa Cruz    14 年前

    不,a string 在PHP中总是可变长度的。您可以修剪字符串以查看是否仍有多余的空间传递给您的数据库。

        3
  •  1
  •   Pekka    14 年前

    不。PHP没有限制字符串大小的规定。

    可以使用 setter and getter variables 但是,如果传入值大于允许值,则抛出错误(或切断数据)。

        4
  •  0
  •   greg0ire    14 年前

    不,但我真的认为你对php没有问题。我认为您应该检查您的DB2配置,也许它会自动用空格完成字符串。。。增加了多少空间?是以前加的吗?之后呢?

        5
  •  0
  •   Cfreak    14 年前

    正如其他人所说:不。

    我不明白这会有什么帮助。我不熟悉DB2,但听起来好像如果有额外的空格,那么它们要么在变量中出现(因此应该对其进行修剪),要么DB2进行空格填充以使值具有100个字符。如果您的输入只有25个字符长,那么如果它正在进行空格填充,它似乎无论如何都会这样做。

        6
  •  0
  •   David Sky    14 年前

    如果您想在DB2中存储可变长度的字符串,那么就使用VARCHAR;如果您总是希望列中的每个字符串具有相同的长度,那么就使用CHAR(例如,对于邮政编码)定义确切的长度。

    有关字符串的详细信息,请访问: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0008470.html 总结得很好:

    固定长度字符串(字符)

    固定长度字符串列中的所有值都具有相同的长度,该长度由该列的“长度”属性确定。长度属性必须介于1和254之间(包括1和254)。

    可变长度字符串 有两种不同长度的字符串:

    • VARCHAR值最长可达32672字节。
    • CLOB(字符大对象)值最长可达2 GB减去1字节(2147483647字节)。

    当然,它会变得更详细,取决于你使用的是哪种编码,等等。。。(如UTF-16或UTF-32)