• ベストアンサー

使うべきでない文字。

こんにちは。いつもお世話になっております。 テーブル名を作成する時に、-(ハイフン)を 使うと、不具合があるから使わないほうが良いと 何かで読みかじったのですが、どのような 不具合が予想されるのでしょうか? また、文字列していカラム(VARCHARなど)でも ー(ハイフン)や+(プラス)など、 使わない方がよかったりいたしますか? MySQLの基礎本などを読み漁ってみたのですが、 ある書物ではテーブル名を普通に日本語文字に していたり、また違う基礎本では、日本語は 使うべきでは無いと紹介されていて、初心者には 何を信じて覚えるべきなのか、混乱してしまって・・・。 どうかご指導よろしくお願いいたします。

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

  • ベストアンサー
  • sakuhat
  • ベストアンサー率61% (11/18)
回答No.2

''で囲えば文字列として扱われるので +などの記号は平気です。 ただし、文字列に「'」や「\」が含まれると 困ったことになります。 「鈴木's SHOP」という文字列をそのまま登録すると INSERT INTO TABLE (NAME) VALUES('鈴木's SHOP'); となり'鈴木'までしか囲ったことにならず エラーになってしまうことがわかると思います。 「'」や「\」を登録するときは 「'」 → 「''」または「\'」 「\」 → 「\\」 とする必要があります。 例. '鈴木's SHOP'→'鈴木''s SHOP' または '鈴木's SHOP'→'鈴木\'s SHOP'

sibazuke
質問者

お礼

sakuhatさま ご指導ありがとうございます。 とても判りやすく説明して頂けたので ストンと頭に入りました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

もちろん日本語で指定することも可能ですが、 あとあと痛い目見たくないなら英数で指定したほうがいいと思いますよ -(ハイフン)を使わないほうが良いというのは SELECT * FROM `customer` WHERE `family-name` = '鈴木' と SELECT * FROM `customer` WHERE family-name = '鈴木' では全く意味が違います つまり後者の場合は-(ハイフン)は-(マイナス)の意味になってしまうからです ちなみに私はこのような場合_(アンダーバー)を使っています SELECT * FROM `customer` WHERE `family_name` = '鈴木' と SELECT * FROM `customer` WHERE family_name = '鈴木' は同じ意味になります

sibazuke
質問者

お礼

inu2さま ご指導ありがとうございます。 マイナスの意味になってしまうのは かなり怖いですよね_| ̄|○ 素人考えながら、アンダーバーを使うように していたよかったです。 ・・・全部指定しなおしだったら恐ろしく 脱力な事になるところでした。 あと、'鈴木'と保存する所へ'鈴木+田中'のように 途中に記号がはいったりするのは、タブー なのでしょうか・・・?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文字数について

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

    • ベストアンサー
    • MySQL
  • 初歩的ですが、どうしてかテーブルが作成できないで困っています。

    こんにちは。 MySQLを使い始めたのですが、 テーブルを作成するという初歩的な部分で、 どうしても自分では分からなくなってしまい 質問させていただきます。 create databaseを行った後、 普通にテーブルを作成しようとしただけではあります。 作成しようとしたテーブルは、 keyというカラムとvalueというカラムの 計2つからなるテーブルです。 しかし、 カラム名の1つを「key」ではなく「time_to_get_the_key」で行うと、 正常にテーブルが作成されるのに、 mysql> CREATE TABLE 20090413_put1(time_to_get_the_key VARCHAR(100), value VARCHAR(100)); Query OK, 0 rows affected (0.01 sec) 同じカラム名を「key」でテーブル作成しようとすると、作成ができないでいます。 mysql> CREATE TABLE 20090413_put1(key VARCHAR(100), value VARCHAR(100)); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(100), value VARCHAR(100))' at line 1 本来は、 「key」と「value」というカラムで、 それぞれ100文字以内で収まる文字列を カラムに挿入させるつもりでした。 何か御意見いただけるとありがたいです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 日本語の文字化け

    APACHE、MYSQL、PHPである本をもとに住所録を作りました。ブラウザには問題なく登録した氏名、住所などが表示されましたが、ターミナルでselect * form テーブル名を実行してみると、日本語が文字化けしています。同様にPHPmyadminのほうでも日本語が文字化けしています。ブラウザにはきちんと表示されるので、この本を読みすすめていく分には問題ないのですが、今後絶対に困ると思われますので、今のうちに直したいです。原因と修正方法を教えて下さい。 apache 1.3.3 MYSQL 4.0.27 PHP 4.4.1 MAC OS X 10.4.8 よろしくお願いします。

  • mysqlの文字化けについて

    mysqlの文字化けについて教えて下さい。 現在はテーブルを作って、データを挿入している段階なのですが、日本語入力のみ文字化けが起こります。 調べたところ、下記のように「my.ini」に記述すると言うことでしたので、試してみました。 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 [mysqldump] default-character-set =utf8 skip-character-set-client-handshake ※そのほかSERVER SECTIONの箇所へも「default-character-set=utf8」を記述。 csvファイルを読み込みすると、日本語の箇所のみ文字化けが起こり、mysql上で直接データを挿入すると、ローマ字は入るのですが、漢字だとエラーになってしまいます。 エラー文 incorrect string value: '入力文字が文字化けして表示’for column 'カラム名’at row 1 何か原因のお解かりになる方、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 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
  • mysqlで異なるテーブルの文字列も一括置き換え

    こんにちわ。 mysqlで複数のことなるテーブルの文字列を一括置き換えしたいと考えています。 ひとつのテーブルなら update テーブル名 set `カラム` = replace(`カラム`,'置換前','置換後') でできました。 table1 table2 table3 と構造が同じテーブルがたくさんある場合に、一括で置き換えができれば便利だと思っています。 どなたかご存知の方いらっしゃれば教えてください。 お願いします。

  • phpMyAdminで文字化け

    PHP5.2.4、MySQLバージョン4.1.16、phpMyAdmin 2.11.1を使用しています。 php側でInnoDBのテーブルを作成して日本語の値を挿入した状態です。 php側では表示などしても文字化けしてないのですが、 phpMyAdminで日本語で登録されているカラムを見ると文字化けしています。 phpMyAdminで日本語の値で更新し直すと、文字化けせずにちゃんと表示されます。 mysqlの設定ファイルで #character-set-server = latin1 #collation-server = latin1_general_ci default-character-set=utf8 skip-character-set-client-handshake として再起動してテーブルを作成し直したのですが文字化けは直りません・・・ 何が原因なのでしょうか? phpMyAdminのテーブルオプション ストレージエンジン:InnoDB 照合順序:utf8-general_ci

    • 締切済み
    • PHP
  • Mysqlで文字化けします

    はじめまして、Mysql初心者です。 Mysqlをインストールして簡単なsql命令を実行したのですが、画面に表示される日本語が文字化けします。MyODBCでACSESSからDBを参照したらやはりテーブル内の日本語が化けていました、この程度の情報しかないのですがどなたか教えて下さい、ヒントでも結構です

    • ベストアンサー
    • MySQL
  • 文字列に対してPHP上で一括置き換えしたい

    DBにあるテーブルの指定されたカラム全てを文字列に対してPHP上で一括置き換えしたいです。 phpアドミン上でSQL文を使って UPDATE `テーブル名` SET フィールド名A=REPLACE (フィールド名A,"置換前の文字列","置換後の文字列"); で実行したらうまくいくのですが、 これをPHP上で処理したいと考えてます。 require("godb.php");//DBにアクセス $sql ="UPDATE テーブル名 SET フィールド名 = REPLACE(フィールド名,"AAA","BBB")"; mysql_query($sql2); と実行してもうまくいきません。。。 これって、、、一個一個対象カラムをPHP上で取り出してから 処理をかけないといけないのでしょうか。。 アドバイスいただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • textareaタグに入力された改行コードの扱い

    PHPとMySQLを利用して簡単なWEBアプリを作っています。 <textarea>内に入力された文字列をMySQLにINSERTする際、使用しているブラウザによって改行コードの文字数が異なるため、MySQLにINSERTされる文字数が異なってしまいます。具体的にいうと、 --MySQL仕様-- <textarea>内のデータを、MySQLのとあるtableにINSERTする。 そのtableの<textarea>のデータを登録するcolumnにvarchar(1000)を指定している。 --PHP仕様-- <textarea>内のデータをPOSTより受け取り、其の生データを上記設定したcolumnにINSERTする。 (文字数チェックの際、\r\nを\nに変換し、改行コードを1文字として解釈させ、カウントしている。) そのデータを訪問者が閲覧できるようにpreg_replaceで改行コードを<br />に変換し表示している。 INSERTされたデータは再編集できるよう、編集ページを設けている。 ◆問題 ブラウザごとで<textarea>内の改行コードが異なるため、文字数カウントの際、\n、\r、\r\nによって文字数にズレが生じてしまい、その結果varchar(1000)で設定したcolumnでは使用したブラウザによってINSERT可能な文字数が異なってしまう。 ◆質問 ブラウザによって出力される改行コードが異なるため、MySQLのtableにINSERTされる文字数が異なってしまいます。改行コードを1文字と解釈し、ブラウザによる差異をなくす良い方法はありませんか? --自身で考えた方法-- ・varchar(1000)を例えばvarchar(1200)などとし、PHP側のみで文字数の制限を掛ける。 ・一部のサイトでは\r\nを\nに変換し、INSERTするって方法が記載ありました。この方法を選択すると、再編集のページでブラウザを判別し、\nを\r\nに変換する手間があるので仕様変更に手間がかかりそう。 以上となります。独学の自分には「自身で考えた方法」しか思い浮かばず、MySQLに登録する際、ブラウザによる改行コードの文字数の差異の良い方法が浮かびませんでした。何か良い方法をご教授いただけませんでしょうか?宜しくお願いします。

    • ベストアンサー
    • MySQL
印刷できないエラーが発生する
このQ&Aのポイント
  • EP806ABの印刷ができません。エラーコード0×20が表示されます。
  • EPSON社製品のEP806ABで印刷ができません。エラーコード0×20が表示される現象が発生しています。
  • EP806ABプリンターが正常に印刷されず、画面に0×20エラーコードが表示される問題に直面しています。
回答を見る