2013-10-06 39 views
0

假設這是一臺主機的問題,但我看不出它如何能讀錯的(完美的作品上的locahost)分貝插入返回胡言亂語值與數值

我的返回一個array稱爲$result,此循環的情況下,$v是一個電話號碼

$k = 'phone'; $v = '(555) 555-1212)';

我已經試過

$result[$k] = preg_replace('/(\W*)/', '', $v); 

我也曾嘗試

$result[$k] = preg_replace('/[^0-9]/', '', $v); 

我收到值從-198040413任何$v1260583916 預期的結果將是5555551212

呼應結果頁的兩種情況給出預期的結果,因此它的不是preg_repalce問題,必須是分貝問題

我知道這不是int限制問題,我使用的是varchar(10)測試

主機使用PHP 5.3.27Arvixe.com的問題,我有其他的衝突與他們,但preg_replace應該是非常簡單的代碼(你想)

+1

嘗試檢查'echo preg_replace('/ \ D + /','',$ v);'first。 – anubhava

+1

您需要縮小問題的範圍。嘗試首先回顯它而不保存到數據庫。如果它不能按預期工作,那麼可以安全地說數據庫是可以的,而且問題在其他地方。現在,我看不出有什麼問題。你沒有給出預期的結果和你實際得到的結果。另外關於'int':'preg_replace()'沒有返回一個int,它返回一個字符串。基本上我認爲你正在混合的東西 – HamZa

+0

更新與預期的結果,僅10位數字 – Kender

回答

1

發現的問題,它是與刀片

我被插入到varchar使用i類型,將其改爲s類型固定它

// does not work 
bind_param('i', $phone); 

// does work 
bind_param('s', $phone); 

當插入varchar字段時

+0

不錯的你很好的解決了這個問題... – HamZa

+0

太棒了。請記住,當相應變量具有類型整數時使用i,當相應變量具有類型字符串時使用s。欲瞭解更多信息,請訪問:http://php.net/manual/en/mysqli-stmt.bind-param.php – pablofiumara

+0

我唯一的問題是......爲什麼'varchar'插入會改變輸入數據,即使它是一個完全數值?解決方案和插入引號一樣簡單嗎? – Kender