PDO我的sql插件如何只插入数字字符

时间:2013-10-05 16:27:30

标签: php pdo

您好我使用以下方法将数据插入到带有PDO的mysql中,

if( isset( $data['passport'] ) ) $this->passport = stripslashes( strip_tags( $data['passport'] ) );

$stmt->bindValue( "passport", $this->passport, PDO::PARAM_STR );

我如何得到一个只有插入号码的结果,并且将删除任何特殊字符和字母,包括像 - 和+

这样的字符

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

使用 ctype_digit 来检查数字。

这样的东西
if(ctype_digit($data['passport'])) //if only numbers
{
echo "Valid";
}

答案 1 :(得分:0)

使用preg_replace()

$this->passport = preg_replace('/[^0-9]/', '', $this->passport);

$stmt->bindValue( "passport", $this->passport, PDO::PARAM_STR );

正则表达式/[^0-9]/允许捕获所提供字符串中的所有非数字字符。要删除它们,只需将其替换为空字符串,即''


UPDv1:我还建议根据存储结构通知用户,如果提供的数据不正确。 请考虑验证可能性。

if(!preg_match('/^[0-9]+$/', $this->passport)){
    echo 'Invalid data';
    // prevent database submition
}