出于某种原因,当我使用preg_replace()
作为存储电话号码的输入字段时,我无法将其存储到MySQL中。 preg_replace可以用于整数还是只能用于字符串?
我试图让字母无法输入到文本字段中。有人可以提供一些见解吗?
$tel = $_POST['tel'];
//当我使用preg_replace时,它不会将值存储在MySQL
中$tel = preg_replace($reg_num,'', $tel);
...
$st->bindParam(6, $tel, PDO::PARAM_INT);
答案 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);