只是想知道,如果有任何关于如何根据mysql数据类型验证特定值/变量的类,函数或ideia。
我们已经在PHP中使用了is_int()is_string()is_float()等等...但是我们没有全部。或者我们呢?任何备忘单?有什么想法吗?
编辑: 关键点基本上是:
答案 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准备好的语句。)
如果您正在寻找特定数据类型以及如何识别它们,那么您可能需要编辑问题以便获得更完整的答案。