• ベストアンサー
  • 暇なときにでも

文字数について

プログラム初心者です mysqlのカラム、varchar(255)に実験で270文字HTMLフォームからmysqlに入れてみました そうしたら、255文字しか保存されていませんでした もしかしたら、PHPで文字数制限しなくてもmysql側のカラムの文字数設定だけでいいのではないかと思ってしまいましたがこれだと不具合とかでてきますか? データ型のtextも文字数指定できるのでしょうか? やっぱり、文字数制限はPHPなどでやったほうがいいのでしょうか? よろしくお願いします

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数170
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

> PHPで文字数制限しなくてもmysql側のカラムの文字数設定だけでいいのではないかと思ってしまいましたがこれだと不具合とかでてきますか? たとえ255文字までしか保存できないのが仕様通りであっても、 ユーザから「せっかく入力したのに途中までしか保存されてないんだけど? バグ?」と思われてしまいます。 なので、PHP側で255文字までしか入力できないようにしておくほうが親切でしょう。 > データ型のtextも文字数指定できるのでしょうか? 文字数指定はできませんが、最大長は決まっています。 http://dev.mysql.com/doc/refman/5.1-olh/ja/blob.html http://dev.mysql.com/doc/refman/5.1-olh/ja/storage-requirements.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます やっぱり、そのほうが親切ですよね。PHP側でやっておきます text型は指定できないのですね。これは絶対やらないとダメですね

関連するQ&A

  • varchar(M)のMは文字数ですかバイト数ですか?

    os:ターボlinuxです。 varchar属性にvarchar(10)と指定すると10文字入ると思っていたのですが、全角で入力すると5文字、半角で10文字でした。 マニュアル6.2のカラム型によると、 M の範囲は 0 〜 255 文字とあります。 TINYBLOB , TINYTEXT は最大長が 255(2^8 - 1)文字 BLOB , TEXTは 最大長が 65535(2^16 - 1)文字 MEDIUMBLOB , MEDIUMTEXTは 最大長が 16777215(2^24 - 1)文字 そして LONGBLOB , LONGTEXT は最大長が 4294967295 または 4G(2^32 - 1)バイト となっています。 LONGだけが「バイト」という表現、それ以外はvarcharも含めて文字数という表現なので、当然文字数でカウントしていると思っていたので完全に計算が狂いました。 これはマニュアルが間違えているのでしょうか? それとも、文字コードによって変わるのでしょうか? その場合、どの文字コードがバイト換算でどの文字コードが文字数換算なのでしょうか? また、MySQLでどの文字コードが使用されているかどこを見れば分かるのですか? となたかご教授下さい。

    • ベストアンサー
    • MySQL
  • フォームのチェック

    mysqlにフォームから送られてきたurlを保存しようと思います そのままだとセキュリティ的にまずいですよね?phpでurlのチェックをする方法はありますか? $hogeにpostされたurlを受け取ってあります varchar(255)のカラムに保存しようと思うのですが255文字超えた文字は登録されないから、文字数制限は必要ないですよね?

    • ベストアンサー
    • PHP
  • text型の文字数

    mysqlのtext型の文字数は何文字くらいまで入るのですか? 例えばひらがなの「あ」で何文字くらい入りますか? 200文字くらいの誤差はあってもいいのです 日本語を入れる場合は何文字くらいに制限するのがいいでしょうか? よろしくお願いします

    • ベストアンサー
    • MySQL

その他の回答 (1)

  • 回答No.2
  • yambejp
  • ベストアンサー率51% (3827/7415)

入力フォームは送信前に確認画面をだすはずです 確認画面で表示されたのものと保存されるものが異なれば明らかにバグです きちんとやるなら確認画面時点でデータの整合性をとるべきです

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます チェックすることしにしました、ありがとうございました

関連するQ&A

  • 文字数制限?

    phpで、文字列をPostgresに保存に保存するという、 単純な、日記登録サイトを自作しています。 ところが、最近textareaへの文字数が多い場合、 submitからの保存を受け付けてもらえない事に気付きました。 ボタンを押しても無反応。文字を削ると、保存可能。 要は文字数制限の様です。 しかし、同じ文字数でもPostgresのコンソールから直接叩くと、保存できます。 送信する文字列、<textarea>、に文字数の制限があるのでしょうか? であれば、何文字でしょう。 また、他に制限文字数を気にしないでもいいくらいの設定値などありませんでしょうか?

    • ベストアンサー
    • PHP
  • varcharの文字数について

    MySQL5.0を2つの環境に構築をして、 それぞれPHPからDBアクセスをしています。 そのときにvarcharに登録できる文字数に違いがあり、 原因をしてもなぜ違いがでるか不明でした。 (1)同一マシン内に以下を構築 ・Windows2003Server(IIS) ・PHP5.2.12 ・MySQL5.0 (2)同一マシン内に以下を構築 ・WindowsXP(IIS) ・PHP4.4.2 ・MySQL5.0 があります。 varchar(100)に対して、超過するような文字500文字などを登録しようとすると、 (1)の環境では登録エラーとなり、DB登録できませんでした。 (2)の環境ではDBのサイズまで登録されて、超過分は破棄された状態で、DB登録がされていました。 MySQLの構築方法は同じですが、 呼び出し元のPHP(IIS?)による影響でしょうか?

  • SJISのCHAR(8)に入れられる文字数について

    SJISのCHAR(8)に入れられる文字数について MySQLのver 5.0にて、文字コードをSJISにして、カラムをCHAR(8)で設定した場合、 英数字1バイト文字の場合、16文字まで入れられるのでしょうか? それとも、単純に文字数で弾かれるのでしょうか? 現在、ver 4.0.24(文字コードは全部Cでいうところのchar1バイトで扱う)から、ver 5.0台に移行を考えており、移行するとした場合、PHPなどのプログラムをどの程度変更しなければならないかを考えています。 たとえば、CHAR(8)のカラムへデータを入れる場合、PHPで if( strlen($hoge) <= 16 ){ $hogeをCHAR(8)のカラムへINSERT処理 } とすると、$hogeが英数字だった場合、16文字まで、INSERT文にかかってしまうのですが、これで問題なく16字までINSERT出来るのかどうか知りたいのです。 以上、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • フォーム要素の文字数制限について

    それぞれのフォーム要素に文字数(またはバイト数)の制限ってあるんでしょうか? あるとしたら何文字ですか? maxlengthなどで指定する値や、受け取るプログラム側の制限ではなく、HTMLの仕様としての制限についてです。 特に知りたいのが、隠しフィールド(input type="hidden")の文字数制限です。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • MySQL5.1の文字列サイズは文字数ではない?

    blue-horse と申します。 お世話になります。 MySQL 5.1 でVARCHAR、CHAR などの字列型フィールドのサイズ指定は、文字数であると認識していたのですが、違うのでしょうか。 utf8の日本語を保存しようとすると、3倍のサイズを要してしまいます。 これはutf8の漢字は3バイトであることと符合するので、なんとなく理解できるのですが、MySQL5.1のリファレンス記述と一致しない様に見えて、納得できません。(不便ですし) >CHAR と VARCHAR タイプには、格納したい最大文字数を表す長さが宣言されています。例えば、CHAR(30) は最大30文字まで持つ事ができます。 「MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.4.1 CHAR と VARCHAR タイプ」 より http://dev.mysql.com/doc/refman/5.1/ja/char.html あるいは、どこか設定を誤っているのでしょうか。 ご教示頂ければ有り難く存じます。 以上、失礼いたします。

    • ベストアンサー
    • MySQL
  • UTF-8での入力文字数について

    少し一般的な質問ですが、よろしくお願いいたします。 UTF-8でコードを書いているのですが、フォームからの入力文字数のチェックのところで、どうするべきか迷っています。 フォームからの文字数の制限は、「全角10文字・半角20文字以下」のようにするのが一般的かと思いますが、UTF-8の場合、皆さんはどのような文字数の制限にされているのでしょうか? 「全角10文字、半角30文字以下」 もしくは 「10文字以下」のように指定しているのでしょうか? ご意見、アドバイス等、お願いいたします。

  • 文字数の制限について

    TextBoxの文字数の制限が上手くいかなくて困っています。 ◆問題点1 最大入力文字数を、半角は50文字、全角は25文字と設定したいです。 下記の質問を参考にし、キーボード入力の制限をかけることが出来ました。 質問:テキストボックスへの文字の入力について http://oshiete1.goo.ne.jp/kotaeru.php3?q=287224 しかし、最大文字数が入力されているときに「貼り付け」を行うと 設定以上の文字数が入力されてしまいます。 入力文字数+貼り付け文字数が、最大入力文字数よりも長ければ、 コピーを禁止したいのですが、何か良い方法はございますか? ◆問題点2 MaxLengthに設定した最大文字数よりも1文字分長く、入力できてしまいます。 MaxLength = 4 と設定したTextBox(仮に「Text1」とします)に半角文字を4文字分入力します。 (このとき、ぴったし4文字分キーボードを押下します。) 次に半角文字2文字分をコピーし、Text1のなかの1文字をドラックして貼り付けます。 (ドラックする文字は最後尾以外です。) 上記手順を行うと、Text1には5文字分入力されてしまいます。 どのような処理を行えば、"4文字まで"と必ず制限できますか? 問題点1、2のどちらか一つでも構いませんので、対処法を教えていただけますか? 宜しくお願いいたします。 なお、環境は Microsoft Windows 2000 Microsoft Visual Basic 6.0 です。

  • 【超基礎】全角文字数とバイト数の数え方

    氏名を格納するmynameという項目があるとします。ここには 全角10文字まではOK、全角11文字以上ダメ、 という文字数制約を設けたいと思います。 MySQL側: myname varchar(20) なフィールドをテーブルに作成し、 PHP側: if (strlen($myname) > 20) { echo "全角10文字までにしてください"; } としました。 HTML側で、 「小泉純一郎」と入れたら、全角6文字なのに 「全角10文字までにしてください」と出てしまいます。 全角10文字まではOK、全角11文字以上ダメ、 とするには、 MySQL側:varchar(20) PHP側:> 20 の数字をいくつにすればいいですか。 全角は2バイトだと思ってたのですが。

    • ベストアンサー
    • PHP
  • MySQLの文字列型について

    お世話になります。 win7 SP1 / エクセル2013  プロセッサ IntelCore Duo CPU 1.2GHz メモリ 1GB の環境です。 ローカルPCで MySQLからエクセルにVBAを使ってSELECT構文にて 書き出ししようとしていますが、 MySQL側で文字列型を TEXT にて保存しているカラム(列)が 1行分しかエクセル側に移せません。 MySQLのデータをVARCHAR(510)型に変更した上で データを保存しなおして 同じSELECT構文にて実行すると 問題なく抽出できます。 TEXT型は可変長型なので 問題ないかと思っていたのですが SIZE(65535バイト)は関係しますでしょうか? 詳しくないのですが TEXT型は可変長バイナリーデータ VARCHAR型は可変長文字列型 と認識してますが、 同じ可変長型でも、データ取り出し時に 何か違いが生じるのでしょうか? 原因がよくわかりません。 また、そうであるとすると このような作業を行う場合は TEXT型の利用はあまりしない方が良いということでしょうか? 特に長いURLなどを保存するときは 文字数を推測し難いので TEXT型の方が便利かと思っています。 どうぞよろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLで文字数によるソートはできますか?

    宜しくお願いします。 MySQLの検索で、そのカラム内の文字数の多い順、少ない順でソートする方法はあるでしょうか。

    • ベストアンサー
    • MySQL