Preg_replace for Integers

时间:2012-07-03 10:03:55

标签: php mysql pdo integer

出于某种原因,当我使用preg_replace()作为存储电话号码的输入字段时,我无法将其存储到MySQL中。 preg_replace可以用于整数还是只能用于字符串?

我试图让字母无法输入到文本字段中。有人可以提供一些见解吗?

$tel = $_POST['tel'];

//当我使用preg_replace时,它不会将值存储在MySQL

$tel = preg_replace($reg_num,'', $tel);

...

    $st->bindParam(6, $tel, PDO::PARAM_INT);

3 个答案:

答案 0 :(得分:2)

preg_replace会将Integer转换为String,并正确执行替换。但是,它将返回一个字符串,其中bindParam期望一个整数。

将电话号码存储为整数通常是不明智的,因为您会丢失任何前导'0'或任何'+'符号(如果用于国际号码)。

答案 1 :(得分:1)

认为问题可能是PDO期望您的电话参数为整数,而$tel变量包含字符串。请尝试改为:

$st->bindParam(6, int($tel), PDO::PARAM_INT);

但是,您应该将电话号码存储为字符串(但这可能需要更改您的架构):

$st->bindParam(6, $tel, PDO::PARAM_STR);

答案 2 :(得分:0)

如果你没有常规exp ..那么只需使用str_replace();

$tel = str_replace ($reg_num,'', $tel);