2013-10-05 39 views
0

你好我使用下面的方法將數據插入到與PDO的MySQL我的SQL INSERT,PDO如何只插入字符數

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

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

我怎樣才能得到一個結果,其中只有將插入號碼,任何特殊字符和字母將被刪除,包括像 - 和+

任何幫助將不勝感激。謝謝。

+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 
} 
+0

*爲什麼要在這裏下臺?*請在建議的時候downvoting:發表評論。 – BlitZ

+0

好的,謝謝! –

+0

@JohnSiniger很高興幫助。乾杯。 – BlitZ

1

利用ctype_digit檢查只有數字。

喜歡的東西

if(ctype_digit($data['passport'])) //if only numbers 
{ 
echo "Valid"; 
}