2012-08-15 116 views
1

我正在創建一個表單在我的個人網站上向我提交消息。無論如何,我創建的腳本有一個變量,$pnumber,它表示有人提交的電話號碼。然而,當它到達MySQL數據庫時,它總是出現同樣的結果:2147483647。無論我輸入什麼號碼,它總是以2147483647的形式出現。其他一切都很好,我很確定我的PHP腳本沒有改變它。我不確定這是否與我在PHPMyAdmin中配置列的方式有關,但這是我沒有得到的:爲什麼它被改變了?SQL更改輸入請求

PHP:

$pnumber = $_REQUEST['pnumber']; 
$largetext = $_REQUEST['comment']; 
if ($pnumber == "") { 
    $pnumber = 0; 
} 
try { 
    $sql = "INSERT INTO contact SET 
      fname = :fname, 
      lname = :lname, 
      email = :email, 
      pnumber = :pnumber, 
      mtext = :largetext, 
      date = CURDATE()"; 
    $s = $pdo->prepare($sql); 
    $s->bindValue(':fname',$firstname); 
    $s->bindValue(':lname',$lastname); 
    $s->bindValue(':email',$email); 
    $s->bindValue(':pnumber',$pnumber); 
    $s->bindValue(':largetext',$largetext); 
    $s->execute(); 

,並在數據庫中的phpMyAdmin顯示pnumber作爲

PHPMyAdmin table

爲什麼被改變多少?

+0

你有沒有嘗試'的var_dump上限值( $ pnumber);'? – Passerby 2012-08-15 05:34:58

+0

你有沒有回覆數字檢查天氣它不是? – 2012-08-15 05:38:17

回答

1

這個數字,2147483647,聽起來像upper bound of a signed integer,所以也許INT是列只是不正確的數據類型。也許嘗試bigint。

+0

將它更改爲'unsigned bigint'後,它接受我現在給它的數字。謝謝! – Polyov 2012-08-15 13:00:42

0

沒有表單的代碼就知道這有點難。你可以把表格的代碼?我認爲這與mysql沒有任何關係,除非你將該電話號碼設置爲默認值。你可以測試它,而不是$pnumber = $_REQUEST['pnumber'];來寫一些類似$pnumber = 201222222;的東西。此外,你不應該存儲電話號碼爲int,我推薦好charvarchar

0

變化從int to stringpnumber類型,當去到phpMyAdmin,並添加相同的號碼,然後你會得到相同的int值,以便將其更改爲字符串,因爲它是INT