今天在写个程序 发现插入的MYSQL数据和POST的不一致 调试发现是数据转换时发生的错误比如一个手机号 我想转换为int 这个手机号是任意字符 不是手机号则false 以前都是用intval
比较好用 比如
if(intval('13688017729'))
...然后继续 发现
echo intval('13688017729');这句不等于13688017729了 我的PDO是这样搞的 帮我看下怎么完善下 修改这个BUGif (array_key_exists($key, $data)) {
if (isset($data[$key])) {
if ($table_column[$key]["d_type"] == "decimal" || $table_column[$key]["d_type"] == "double") {
$newdata[$key] = doubleval($data[$key]);
} elseif ($table_column[$key]["d_type"] == "int" || $table_column[$key]["d_type"] == "smallint" || $table_column[$key]["d_type"] == "tinyint" || $table_column[$key]["d_type"] == "mediumint" || $table_column[$key]["d_type"] == "bigint") {
$newdata[$key] = intval($data[$key]);
} elseif ($table_column[$key]["d_type"] == "float") {
$newdata[$key] = floatval($data[$key]);
} else {
$newdata[$key] = $data[$key];
}
}
}
比较好用 比如
if(intval('13688017729'))
...然后继续 发现
echo intval('13688017729');这句不等于13688017729了 我的PDO是这样搞的 帮我看下怎么完善下 修改这个BUGif (array_key_exists($key, $data)) {
if (isset($data[$key])) {
if ($table_column[$key]["d_type"] == "decimal" || $table_column[$key]["d_type"] == "double") {
$newdata[$key] = doubleval($data[$key]);
} elseif ($table_column[$key]["d_type"] == "int" || $table_column[$key]["d_type"] == "smallint" || $table_column[$key]["d_type"] == "tinyint" || $table_column[$key]["d_type"] == "mediumint" || $table_column[$key]["d_type"] == "bigint") {
$newdata[$key] = intval($data[$key]);
} elseif ($table_column[$key]["d_type"] == "float") {
$newdata[$key] = floatval($data[$key]);
} else {
$newdata[$key] = $data[$key];
}
}
}
要检查他是否全由数字组成可用 is_numeric 函数或正则