根据MYSQL数据类型检查PHP变量类型

时间:2012-03-08 00:48:02

标签: php mysql validation types

只是想知道,如果有任何关于如何根据mysql数据类型验证特定值/变量的类,函数或ideia。

我们已经在PHP中使用了is_int()is_string()is_float()等等...但是我们没有全部。或者我们呢?任何备忘单?有什么想法吗?

编辑: 关键点基本上是:

  • 获取一系列值(例如,来自CSV)。
  • 我知道什么是表,并且拥有所有列信息(数据类型很好)(使用adodb)。
  • 只需检查每个值是否适合特定列...

1 个答案:

答案 0 :(得分:1)

如果数据来自CSV文件,您必须记住所有值都是字符串(即使数字字符串仍然具有字符串类型)。

因此,您无法使用is_int() / is_float() / etc。因为这只会告诉您类型或变量。您可以使用is_numeric()来检查值,但这将允许像“+ 0123.45e6”这样的指数表示法。有时候ctype_digit()对于测试整数有用,因为它只允许数字0-9出现在字符串中,以使其返回true。

正则表达式也可用于识别基于模式的数据类型,但在处理大型数据集时,您必须注意性能开销。从性能角度来看,几乎总是建议使用preg_函数族而不是ereg函数。

如果您要验证ENUM或SET类型之类的内容,您可能需要创建一个包含合法值的数组(或使用查询提取这些值),然后使用in_array()检查它们的值。< / p>

对于CHAR / VARCHAR字段,您可以解析列定义,然后检查值的长度是否在约束范围内。

如果你的任何列都允许使用NULL类型,你还需要检查这个(并且可能将空值或字符串“NULL”映射到实际的NULL值)。

如果您想要正确地转义这些值,请查看使用预准备语句和PDO(PHP数据对象)扩展。这允许MySQL根据类型正确地转义数据。 (您也可以使用MySQLi准备好的语句。)

如果您正在寻找特定数据类型以及如何识别它们,那么您可能需要编辑问题以便获得更完整的答案。