1

個人の Web サイトでメッセージを送信するためのフォームを作成しています。とにかく、私が作成したスクリプトには、$pnumber誰かが送信した電話番号を表す変数があります。ただし、MySQL データベースに到達すると、常に同じ結果が得られます: 2147483647. フォームにどんな数字を入力しても、常に2147483647. それ以外はすべて問題ありません。私の PHP スクリプトによって変更されていないことは確かです。これが PHPMyAdmin で列を構成した方法と関係があるかどうかはわかりませんが、それはわかりません:なぜ変更されているのですか?

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 テーブル

なぜ番号が変更されるのですか?

4

3 に答える 3

1

その数 2147483647は、符号付き整数の上限のように聞こえるため、 int は列の正しいデータ型ではない可能性があります。多分bigintを試してください。

于 2012-08-15T05:38:19.713 に答える
0

フォームのコードがないと知るのは少し難しいです。フォームのコードを教えてください。その電話番号をデフォルト値として持っていない限り、mysqlとは何の関係もないと思います。$pnumber = $_REQUEST['pnumber'];のようなものを書く代わりに、それをテストすることができます$pnumber = 201222222;。また、電話番号を として保存intするべきではありcharません。varchar

于 2012-08-15T05:34:42.463 に答える
0

Phpmyadminに移動しながらpnumberタイプをasから変更し、int to string同じ数字を追加すると、同じint値が得られるので、intの上限値であるため、文字列に変更します

于 2012-08-15T05:50:38.280 に答える