SQLを勉強しようと思い、本を見ながらやっているのですが、入力する文字が全て半角でないとPHPで正常に登録できません。コマンドプロンプトから「Insert ・・・ 」と下記の通り打ち込むと問題なく登録できます。本当は下記のtest1~3は全角/半角を意識せず入力出来るようにしたいと思っています。お手数ですがご教示お願いします。
使用している環境は下記です。
WinXP HE
Mysql 5.0
php 5.2.1
Apache 2.0.46
(SQLを更新しようとしている部分 ・・・ 下記”test3”は「3」だけ全角にしているとエラーになるが、半角で「3」と記述すると正常に登録できる)
$sql = "INSERT INTO cdinfo(cd_no,artist_name,title,genre,melody1) VALUES(9,'test1','test2','J-POP','test3')";
$result = query($sql,$con);
(上記”query”の中身)
<?php
function query($sql,$con) {
$result = mysql_query($sql,$con);
if ($result == false) {
echo ("クエリーの実行に失敗しました!");
exit();
}
return $result;
}
?>
No.4
- 回答日時:
php.iniの件です。
> ;mbstring.language = Japanese
> ;mbstring.internal_encoding = EUC-JP
> ;mbstring.http_input = auto
> ;mbstring.http_output = SJIS
> ;mbstring.encoding_translation = Off
> ;mbstring.detect_order = auto
> ;mbstring.substitute_character = none;
上記の設定項目がすべてコメントになっていますね。
お使いの環境に応じた内容を明示的にセットする方がよいと思います。
(私の手元にある)書籍などの情報によりますと、phpスクリプトの文字コードは
EUC-JPが望ましいとされています。シフトJISだと、ブラウザへの
出力が文字化けしてしまうなどの問題が起こりうるためです。
書かれたスクリプトをすべてEUC-JPに変更できればよいのですが、
そうもいかない場合、以下のように設定する必要があると思います。
各項目は、先頭のセミコロンを削除して、活かしてください。
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
それから、マルチバイト文字列の件とは別に、もう一点
default_charset = "Shift_JIS"
にしておいてみてください。
php.iniを変更したら、忘れずにApacheをリスタートしてください。
これでうまくいけばよいのですが、もしもうまくいかない場合は、
データベースへの接続直後に
"set names sjis"
というクエリーを実行してみてください。
この回答への補足
度々の回答ありがとうございます。
mbstrinの件ですが、下記の通り有効にしてみました。
[mbstring]
; language for internal character representation.
mbstring.language = Japanese
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = SJIS
; http input encoding.
mbstring.http_input = auto
; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = SJIS
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
;mbstring.encoding_translation = Off
mbstring.encoding_translation = On
; automatic encoding detection order.
; auto means
mbstring.detect_order = auto
; substitute_character used when character cannot be converted
; one from another
mbstring.substitute_character = none;
; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 0
dfault_charset も下記のようにあわせてみました。
;default_charset = "iso-8859-1"
default_charset = "Shift_JIS"
残念ながら上手くいきませんでした。また、最後に教えていただいている"set names sjis"はどのように記述すれば良いでしょうか?”mysql_connect”のあとに書いてみたら全然違うエラーが出たのでこんな記述方法ではないのだろうとわかりましたが。
申し訳ないです、ど素人な質問で。
No.3
- 回答日時:
まずはこちらの件から。
> [mysqld]
> default-character-set=sjis
承知しました。データベースの文字コードはシフトJISである、ということですね。
> 文字コードはshift-jisだと思いますが、
> 上記の”Insert”文の数行後に下記のように記述してあります> (本の例題のまま)。ここだと遅いのでしょうか?
スクリプトの編集に使われているソフトウェアに文字コード切り替え機能がなければ、
おそらくはシフトJISでしょうね。
また、<head>タグで始まるその4行は、一般にはhtmlファイルやphpスクリプトの
先頭部分に書くものだと思うのです。
insert文の後に書いてあるとのことで、スクリプトがどういった構成になっているかが
よくわからなくなりました。
No.2
- 回答日時:
#1の者です。
phpの設定ファイル"php.ini"の[mbstring]セクションに書いてある、
「mbstring.何とか」という複数項目の設定内容も教えてください。
この回答への補足
php.iniには下記のように記述されています。
[mbstring]
; language for internal character representation.
;mbstring.language = Japanese
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
;mbstring.internal_encoding = EUC-JP
; http input encoding.
;mbstring.http_input = auto
; http output encoding. mb_output_handler must be
; registered as output buffer to function
;mbstring.http_output = SJIS
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
;mbstring.encoding_translation = Off
; automatic encoding detection order.
; auto means
;mbstring.detect_order = auto
; substitute_character used when character cannot be converted
; one from another
;mbstring.substitute_character = none;
No.1
- 回答日時:
MySQLの設定ファイル"my.ini"の[mysqld]セクションで、
default-character-set の設定はどうなっていますか?
また、くだんのphpスクリプトの文字コードは何でしょうか?
この回答への補足
my.iniには下記と記されています。
[mysqld]
default-character-set=sjis
文字コードはshift-jisだと思いますが、上記の”Insert”文の数行後に下記のように記述してあります(本の例題のまま)。ここだと遅いのでしょうか?
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php エラー 2 2022/10/23 16:43
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
like句を使って日本語を検索す...
-
netscreen remoteに関して
-
接続ができません
-
副問合せにLIKE文を使う方法は...
-
SQLのVARCHARとVARCHAR2の違い
-
MySQLカラム名は日本語と英数字...
-
php・Mysql Like文で日本語が使...
-
mysqlがインストールされている...
-
PHP+MySQLから結果セット取得後...
-
phpで複数のDBを使用した場合の...
-
select文で見つからない場合の結果
-
MySQLの日本語LIKE検索について
-
SQL開発環境ソフトウェアである...
-
ODP.NETのバージョン確認
-
mysql_close();の必要性について
-
コメントが消えてしまいます
-
実行時エラー80004005
-
MysqlにURLを登録する方法
-
ERROR 1045 (28000) (using pas...
-
DECIMALの範囲について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
like句を使って日本語を検索す...
-
windows上のphpにおける全角ハ...
-
ODBC接続で全角文字が文字化け
-
my.cnf と my.ini の違い
-
4バイトUTF-8文字でUPDATEする...
-
VBからのODBC接続でSQLエラー
-
MySQL4.1 文字コードについて
-
MySQ漢字文字化け
-
「表」の文字入りのレコードがi...
-
Shift-JIS文字化けについて
-
MySQL 5.0.41 のvarcharの文字...
-
phpMyadminでのMySQLの文字セット
-
phpMyAdminにおけるSJISモード...
-
エクセルで連勤チェックをした...
-
mySQLの日本語表示について
-
phpMyAdminのデフォルトのLangu...
-
PHPを使用してMySQLを...
-
netscreen remoteに関して
-
XAMPP MySQL my.cnfの設定について
-
さくらインターネットのMySQL ...
おすすめ情報