PHP+MySQLで部分一致検索の処理を作成しているのですが
ある文字は正常に検索できてある文字は正常に検索できていないといった文字によって動きが異なります。
原因が不明なのでどなたか教えてください。
ちなみに検索文を作成する時は「mb_convert_encoding」を使用して入力された文字を「SJIS」⇒「UTF8」に変換しています。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

PHPとかMySQLの世界は、基本はEUC-JPですね。



UTF-8で処理したい場合は、周辺の環境設定がどうなっているのか
確認し、必要に応じて修正する必要があります。

まずはphpinfo()で環境を確認してみてはどうでしょう。

この回答への補足

ありがとうございます。
DB登録時はUTF8で登録しております。
検索字には検索条件を「mb_convert_encoding」で
「SJIS」⇒「UTF8」にエンコードしておりますが
他にどこの環境設定が必要でしょうか?

補足日時:2006/07/21 14:38
    • good
    • 0

答える側は、この掲示板の情報のみしかわかりません。

あなたのプログラムのソースも見えないし、どう「動きが異なる」のか、またエラーメッセージが出ているのか/いないのか、出ているのならどんなメッセージが出ているのかも判りません。

phpinfo()で判るmb環境とかソースとかが出てくれば、答えてくれる人も出てくるかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
もう少し情報をまとめて再度質問させて頂きます。

お礼日時:2006/07/24 09:47

原因はUTF-8よりもSJISだとおもいます。



PHPとMySQLのバージョンとソースを見てみないことにはなんとも言えませんが
5Cコード含みの文字、通称「馬鹿文字」を使用した場合に起こるのではないでしょうか?


不具合が以下の文字を使用した場合に起こっているのではないかどうか調べてみてください。

―,ソ,Ы,IX,噂,浬,欺,圭,構,蚕,十,申,曾,箪,貼,能,表,暴,予,禄
兔,喀,媾,彌,拿,杤,歃,濬,畚,秉,綵,臀,藹,觸,軆,鐔,饅,鷭,偆,砡

この回答への補足

有難うございます。
PHPのバージョンは4.4.2で、
MySQLのバージョンは4.0です。
教えて頂いた文字以外にもカナ文字でも
正常に検索されませんでした。

補足日時:2006/07/21 14:51
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qfirefox2.0.0.3の検索バーの虫眼鏡アイコン

firefox2.0.0.3の検索バー(検索ボックス?)に、虫眼鏡アイコンを表示させる方法を教えてください。

・http://oshiete1.goo.ne.jp/qa1333332.htmlを参考にアドオン「Search Button」を探したのですが見つかりません。
・会社のパソコンにインストールしたfirefox(バージョンは2のはず)には、虫眼鏡アイコンが標準で装備されていたと記憶しております。

よろしくお願いします。

Aベストアンサー

とりあえず不具合診断チャート参照。
ひょっとしたら何らかの拡張により非表示とされているのかもしれません。

不具合診断チャート - もじら組Wiki
http://wiki.mozilla.gr.jp/wiki.cgi?page=%C9%D4%B6%F1%B9%E7%BF%C7%C3%C7%A5%C1%A5%E3%A1%BC%A5%C8

QPHP+MySQLでの検索処理について2

前回質問させて頂いた件ですが詳細情報を追記致します。
PHP+MySQLで部分一致検索の処理を作成しているのですが
ある文字は正常に検索できてある文字は正常に検索できていないといった文字によって動きが異なります。
原因が不明なのでどなたか教えてください。
宜しくお願いします。

【現象】
下記の(1)(2)のDB項目を"作成"の部分一致で検索しても(1)しか検索されない。(両方とも漢字)
(1)XXX作成
(2)○○○作成

【環境】
PHPのバージョン・・・4.4.2
MySQLのバージョン・・・4.0

【検索SQLの一部】
"テーブル名 LIKE '%".mb_convert_encoding(検索文字列,"UTF8","SJIS")."%'";

【php.info情報】
mbstring.http_input:auto
mbstring.http_output:SJIS
mbstring.internal_encoding:SJIS
mbstring.language:Japanese
mbstring.encoding_translation:On
Multibyte Support:enabled
Multibyte Support :enabled

前回質問させて頂いた件ですが詳細情報を追記致します。
PHP+MySQLで部分一致検索の処理を作成しているのですが
ある文字は正常に検索できてある文字は正常に検索できていないといった文字によって動きが異なります。
原因が不明なのでどなたか教えてください。
宜しくお願いします。

【現象】
下記の(1)(2)のDB項目を"作成"の部分一致で検索しても(1)しか検索されない。(両方とも漢字)
(1)XXX作成
(2)○○○作成

【環境】
PHPのバージョン・・・4.4.2
MySQLのバージョン・・・4.0

【検索SQL...続きを読む

Aベストアンサー

レス付きませんね。
自分はUTF8環境を持ってないので、テストする事ができないので、
こうすれば良いという回答は出来ません。
アドバイスのみです。

(1)自分でやるとしたら、まずはMySQLを使わずにPHPのみで
同じ問題が起きるのかを確認してみます。

(2)PHPのマニュアルによると、内部エンコーディングSJISは
問題がありそうです。以下に引用しました。
> PHPの内部エンコーディングとして使用可能な文字エンコーディングと 使用できない文字エンコーディングの例を以下に示します。
>
> PHPで動作する文字エンコーディング:
> ISO-8859-*, EUC-JP, UTF-8
>
> PHPで動作しない文字エンコーディング:
> JIS, SJIS
>
> PHPの内部エンコーディングとして使用できない文字エンコーディングは、 mbstringのHTTP入力/出力変換の機能/関数により変換 することが可能です。
>
> 注意: SJIS は、読者がパーサ/コンパイラ、文字エンコーディングと文字エン コーディングの問題点について精通していない限り内部エンコーディン グとして使用するべきではありません。
>

レス付きませんね。
自分はUTF8環境を持ってないので、テストする事ができないので、
こうすれば良いという回答は出来ません。
アドバイスのみです。

(1)自分でやるとしたら、まずはMySQLを使わずにPHPのみで
同じ問題が起きるのかを確認してみます。

(2)PHPのマニュアルによると、内部エンコーディングSJISは
問題がありそうです。以下に引用しました。
> PHPの内部エンコーディングとして使用可能な文字エンコーディングと 使用できない文字エンコーディングの例を以下に示します。
>
> PHPで動...続きを読む

Qsafariの右上の虫眼鏡アイコンを消したい

safari右上の虫眼鏡アイコンを消したいです。

検索履歴を消したいのではなく、
アイコン自体を消す方法はありますか??

Aベストアンサー

検索窓自体は表示メニューの「Google検索」にあるチェックを外せば消えますね。検索窓は使いたいけれど虫眼鏡アイコンだけを消したいというのは、プログラム本体を弄る必要がありそうなので、ちょっと難しいと思います。

QPHP+MySQLの繰り返し処理で…

PHPとMYSQLを使ってWEBページを作っています。
わからないところがあるので、どなたか教えていただけないでしょうか?php5+mysql4.0.1です。

検索フォームから送られてきた条件をもとに、1ページに10件の検索結果を表示しています。表示するのはテーブル1の名前で、ここまではうまくいっています。
例:------------------------------------------
検索結果
神奈川県 林さん
東京都 遠藤さん
北海道 近藤さん
例:------------------------------------------
このあと、上記クエリの結果が続く限りテーブル2
から名前に該当する趣味を表示したいと思います。
例:------------------------------------------
検索結果
神奈川県 林さん テニス
東京都 遠藤さん サッカー
北海道 近藤さん 絵画
例:------------------------------------------
この処理を加えると、一ページに10件表示されていたものが最初の一件だけしか表示されなくなってしまいます。whileの中に新たにクエリを書いているからでしょうか…?
以下に問題部分だけ見やすくまとめなおしたソースを書きました。

(1)$sql = "SELECT name,ken FROM tablename where ken=$ken";
$mysql->query($sql);
while($row = $mysql->fetch()){
$name = $row[name];
(2)$sql2 = "SELECT syumi FROM tablename2 WHERE name='$name'";
$mysql->query($sql2);
while($row2 = $mysql->fetch()){
$syumi = $row2[syumi];
}
echo "$ken"."$name"."$syumi";
}

わかりづらい説明ですみません。
テーブル1に趣味のフィールドを作ることはできない前提で、このままのDB構造でうまく上記を解決することはできますか?

ご指導よろしくお願いします。

PHPとMYSQLを使ってWEBページを作っています。
わからないところがあるので、どなたか教えていただけないでしょうか?php5+mysql4.0.1です。

検索フォームから送られてきた条件をもとに、1ページに10件の検索結果を表示しています。表示するのはテーブル1の名前で、ここまではうまくいっています。
例:------------------------------------------
検索結果
神奈川県 林さん
東京都 遠藤さん
北海道 近藤さん
例:------------------------------------------
このあと、上記クエリの結果が続く限...続きを読む

Aベストアンサー

「検索フォームから送られてきた条件」とは何でしょうか?

2つのテーブルのカラム定義を教えてください。

提示されたスクリプトで、SQL文を格納する変数の先頭に付いている
(1)や(2)の意味合いを教えてください。

以下は、素人考えです。
仮に、2つのテーブルにおいて、「名前」カラムがキーとなっているのであれば、
$sql = "select tablename.ken, tablename.name, tablename2.syumi from tablename, tablename2 where tablename.name = tablename2.name";
というようなSQL文(間違っているかもしれません)で、
2つのテーブルから都道府県、名前、趣味を一度に検索できるような気がするのですけれど…。

Qフリーのアイコンファイルを教えて下さい。

フリーのアイコン素材を探しています。
フリーアイコンなどで検索すればたくさん出てくるのですが、
なかなか気に入ったものがありません。

サムネイルを見てダウンロードしてみても大概は、
フリーとなると完成度が低いものが多く、特に海外の作者の物は
大雑把な物が多くウインドウズ標準のものより質が落ちるようです。

そこで、無料で公開されている物を、サムネイルで判断して
ひとつずつダウンロードして試す事が難しいので質問させてください。

個人的な、ご意見でかまいませんので、
お奨めのフリーのアイコンがあれば教えて下さい。

ファイルの形式は、ウインドウズXPで表示出来る物でお願いします。

Aベストアンサー

#2です。
ダウンロードボタンを押した後、「.exe」と付く拡張子のファイルは
避けてください。
セキュリティーの関係で、あまり良い評判を聞きません。
「.zip」形式のみご利用ください。
こちらは安全ですので。

QPHP+MySQLでの排他処理とDBクローズ

<環境>
Apache1.3.37
PHP4.4.6
MySQL4.0.27

PHPで、掲示板などのスクリプト作成を勉強しています。
これまで、ログをログファイルとして保存するように作成しておりましたが、データベースに保存するように変更している途中です。
そこで、教えていただきたいのは下記の2点です。

・ロック処理の必要性
→ログファイルを作成するタイプの場合、同時アクセスによるファイル破損を防ぐため、ロック処理が必要でした。DBに変更した場合も同様に必要なのでしょうか?

・DBのクローズ処理
→最小限のソースを以下に記します。9行目のクローズ処理は必ず必要でしょうか?また、エラーが発生した場合、7行目で処理が終わるのですが、この直前にもクローズ処理を記入する必要があるのでしょうか?

1)<?php
2)$db = mysql_connect(host,user,pass);
3)mysql_select_db(db-name,$db);
4)$query = "INSERT INTO table(id,name) VALUES('1','なまえ')";
5)if (!(mysql_query($query))) {
6) print = "書き込みに失敗しました。";
7) exit();
8)}
9)mysql_close($db);
10)?>

宜しくお願いします。

<環境>
Apache1.3.37
PHP4.4.6
MySQL4.0.27

PHPで、掲示板などのスクリプト作成を勉強しています。
これまで、ログをログファイルとして保存するように作成しておりましたが、データベースに保存するように変更している途中です。
そこで、教えていただきたいのは下記の2点です。

・ロック処理の必要性
→ログファイルを作成するタイプの場合、同時アクセスによるファイル破損を防ぐため、ロック処理が必要でした。DBに変更した場合も同様に必要なのでしょうか?

・DBのクローズ処理
→最小限の...続きを読む

Aベストアンサー

>>Aさんが更新処理をしてる間にBさんが更新処理をした場合に
>>常に後からの処理を優先するということであれば特にロックはいりません。
>これは同一レコードに対する操作、でしょうか?
>現時点では、同一レコードを複数の人が更新・削除することはありえま
>せんので、排他ではない。ということになるかと思います。

同一レコードに対する更新以外は当然競合は発生しませんので、
ここでは無視してよいでしょう。
同一レコードの同一フィールドに対しての更新は、ロックしなければ
常に最後の更新が有効になるという考え方でよいでしょう。
もちろんトランザクションまで視野にいれれば、堅牢性はあがりますが
処理が煩雑になることを考えるとそこまではする必要がないということ
です。

>削除はDELETEではなく、削除フラグを更新するという考え方ですね。
>ただ、提示していただいている例はいずれもdocIDが1234の同一レコード
>の操作ですが、対象になるフィールドが違うので競合しないのですか?

単純に削除フラグを立てたあとに更新しようとしても、whereではじかれる
ため、競合しないという考え方です。
逆に更新後に削除する場合は、フラグをたてるだけですから、フィールド
がことなるため競合しないですね。

>>Aさんが更新処理をしてる間にBさんが更新処理をした場合に
>>常に後からの処理を優先するということであれば特にロックはいりません。
>これは同一レコードに対する操作、でしょうか?
>現時点では、同一レコードを複数の人が更新・削除することはありえま
>せんので、排他ではない。ということになるかと思います。

同一レコードに対する更新以外は当然競合は発生しませんので、
ここでは無視してよいでしょう。
同一レコードの同一フィールドに対しての更新は、ロックしなければ
常に最後の更新が有...続きを読む

Qフリー素材でレビュー用の星アイコンを探しています

フリー素材で検索すると、リンク集ばかり検索されるため、
ヒット率が悪く困っています。
タイトル通りなのですが、
映画とかのレビュー用に星アイコンのフリー素材がないか暫くささしていますが、
なかなか良いものが見つかりません。
お勧めのサイトがありましたら、教えてくださいませ。

Aベストアンサー

http://atp.boo.jp/にたくさんありました。
参考URLの方に星のアイコンのページを載せておきます。

もう一つ
http://0923.jugem.jp/?eid=7
もどうぞ。

参考URL:http://atp.boo.jp/ico/pnt_06.html

QPHP5+MySQL5 CSVから、更新、追加する処理の書き方

こんにちは。

PHP5とMySQL5を使っています。
CSVファイルを読み込み、キーが存在するレコードは更新、
存在しなければ追加、という処理について
色々な書き方を教えて頂けたらと思います。

例えば、フィールドは、ユニークキーとなる[ID]、
[Name]、[TEL]の3つとします。

1.CSV読む
2.行と列の2次元配列に格納
3.行数分ループ開始
3-1.IDをキーに、SELECT
3-2.存在したら
3-3.UPDATE更新
3-2.存在しなかったら
3-3.INSERT追加
4.行数分ループ終了
と考えています。

CSVに100行あったら、100回SELECT掛けることになりますが、
この書き方で問題ないでしょうか?

もっと判り易い、こんな書き方も!
というのがありましたら、是非頂けますでしょうか。

よろしくお願いします。

Aベストアンサー

いくつか方法が考えられますが、MySQLの場合、一番簡単なのはREPLACE構文を使う方法だと思います。
http://dev.mysql.com/doc/refman/4.1/ja/replace.html

他にも、SELECTをしないで済む方法はあります。例えば、とりあえず無条件にINSERTしてみて重複エラーだったらUPDATEするとか、逆に無条件にUPDATEしてみてaffected_rows(UPDATEされた行数)が0だったらINSERTするとか。

Qfirefoxのブックマークの検索の部分の虫眼鏡を

firefoxのブックマークの検索の部分の虫眼鏡を消したい

firefox12.0を使っております。
アドオン「Stilish」を使用し、windowsXPのクラシックスタイルと色を変えるソフトでカスタマイズしております。
firefoxのバージョンが新しくなり、ブックマークのところに検索の入力フォームができました。
こちらに表示される虫眼鏡が不要ですので消したいです。
Stilishにどのように記述すればいいでしょうか?

また、できればブックマークのフォルダアイコンも消したいです。
よろしくお願いいたします。

以下stilishに記述してある全文です。
toolbox#navigator-toolbox {
border-left: 1px solid ThreeDHighlight !important;
}

hbox#browser {
border-left: 1px solid ThreeDHighlight !important;
}

hbox#browser .plain {
-moz-appearance: listbox !important;
}

tabbrowser {
background: ThreeDFace !important;
}

tab {
-moz-appearance: tab !important;
margin-top: 3px !important;
}

tab[selected="true"] {
margin-top: 1px !important;
}

#searchbar .search-go-button{
display: none !important;
}

#bookmarksPanel treechildren::-moz-tree-image(container),
#bookmarksToolbarFolderMenu, #bookmarksToolbarFolderMenu [container],
.bookmark-item[container] {
list-style-image: url("chrome://FOLDER_16x16-32.png") !important;
-moz-image-region: rect(16px 128px 32px 112px) !important;
}

sidebarheader {
-moz-appearance: none !important;
background: black !important;
border: none !important;
}

.tab-icon-image {
display:none !important;
}

firefoxのブックマークの検索の部分の虫眼鏡を消したい

firefox12.0を使っております。
アドオン「Stilish」を使用し、windowsXPのクラシックスタイルと色を変えるソフトでカスタマイズしております。
firefoxのバージョンが新しくなり、ブックマークのところに検索の入力フォームができました。
こちらに表示される虫眼鏡が不要ですので消したいです。
Stilishにどのように記述すればいいでしょうか?

また、できればブックマークのフォルダアイコンも消したいです。
よろしくお願いいたします。

以下stilish...続きを読む

Aベストアンサー

Stylishでどこまで出来るか自信ないので強引に別な方法を採る(おぃ
意外と複雑なので、「面倒」って思うタイプなら今のうちに回れ右。
==================
まず、Firefoxを終了させる。

Firefoxのインストールディレクトリにあるomni.jaをどっかにコピーして、
拡張子をzipにして解凍。

#…と思ったんだけど、何か今日のナイトリービルドが、Explzhでないと解凍できなくなっているorz
#http://www.ponsoftware.com/
##しばらく他のアーカイバでも解凍出来てたんだけどなあ…

ここで、ちゃんと元に戻せるかどうか「仕上げ」をしてみて確認しておいた方がいいと思うよ。

●ブックマークサイドバーの検索バーから虫眼鏡アイコンを取り除く

chrome/toolkit/content/global/bindings/
textbox.xmlが以下のようなソースになっているので
http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/textbox.xml#310
上記URIの316行目から323行目に相当するxul:deck要素を削除(注:コードはナマモノなので、行番号が変動することはよくあります)

●サイドバーのブックマーク項目にアイコンを表示させない手順
俺のマシンの場合Vistaであるから、Aeroが有効担っていると思われたので
chrome/browser/skin/classic/aero/browser/places/places.css
XPの場合はおそらく
chrome/browser/skin/classic/browser/places/places.css

で以下の28行目から131行目に相当する部分(list-style-imageとか-moz-image-regionが指定されてる部分ね)をざくっと削除
http://mxr.mozilla.org/mozilla-central/source/browser/themes/winstripe/places/places.css#28

さらに、
chrome/browser/content/browser/places/browserPlacesViews.jsを開いて
iconで検索を掛けて

let icon = aChild.icon;
if (icon)
button.setAttribute("image", icon);

とか

let icon = aPlacesNode.icon;
if (icon)
element.setAttribute("image", icon);

をひたすら(っつっても3箇所くらいしかないけど)
/*
let icon = aChild.icon;
if (icon)
button.setAttribute("image", icon);
*/
っつー感じでコメントアウトします。

ただ

if (!icon)
elt.removeAttribute("image");
else if (icon != elt.getAttribute("image"))
elt.setAttribute("image", icon);


/*
if (!icon)
*/
elt.removeAttribute("image");
/*
else if (icon != elt.getAttribute("image"))
elt.setAttribute("image", icon);
*/

としてください。(三角形は残るけどね)

あと、(上記、フォルダ以外にも影響受けているかもしれないが)残ったものについてブックマーク項目自体からアイコンを非表示にしたければ
chrome/browser/content/browser/places/treeview.jsからgetImageSrcを検索し、

getImageSrc: function PTV_getImageSrc(aRow, aColumn) {


return "";
},


と書き換えます。

●仕上げ
で、元と同じように圧縮して、omni.jaをFirefoxのインストールディレクトリに放り込む。
解凍ツールが解凍内容を新しく作ったフォルダに突っ込む設定になっていることがあるけど、このフォルダは含まない。中身だけをまとめて圧縮だから注意すること。
で、一応、エクスプローラのアドレスバーに
%USERPROFILE%\APPDATA\Local\Mozilla(Vista以降の場合)
%USERPROFILE%\Local Settings\Mozilla(XPの場合)
を打ち込んで開いたフォルダを削除。
Firefoxを起動し、正常に起動することを確認。

#なお、この手のテキストボックスの虫眼鏡の削除の変更は同じ部品を使っている全ての場所が影響を受けるはず。
#どうやら検索バーは別部品。

#検証環境:手元のFirefox 15.0a1pre(開発版)で検証しました。

Stylishでどこまで出来るか自信ないので強引に別な方法を採る(おぃ
意外と複雑なので、「面倒」って思うタイプなら今のうちに回れ右。
==================
まず、Firefoxを終了させる。

Firefoxのインストールディレクトリにあるomni.jaをどっかにコピーして、
拡張子をzipにして解凍。

#…と思ったんだけど、何か今日のナイトリービルドが、Explzhでないと解凍できなくなっているorz
#http://www.ponsoftware.com/
##しばらく他のアーカイバでも解凍出来てたんだけどなあ…

ここで、ちゃんと元に戻せるかどうか...続きを読む

QPHP+MySQL 2次元配列をPOSTで渡す処理について

こんにちはー!

PHPで作った2次元配列をPOSTで渡す場合、丸ごと渡すことはできないのでしょうか。

1.CSVファイルを選択させ、読み込み
2.CSVの内容確認画面を表示
3.ユーザに対象レコードを選択させる
4.データベースへ追加
という処理を作っています。

「2.内容確認画面を表示」の際、
内容表示部分と、データベース追加用のPOSTで渡す部分は
配列をループさせています。

内容表示部分は問題無いですが、データベース追加用の部分は
配列の要素数分hiddenタグを書き出しています。

要素数が多ければ多いほど、
ソースがすごい量になってしまうのですが、
配列を丸ごと渡すことはできないのでしょうか?

PHP4、もしくはPHP5でなにか方法はないでしょうか?

Aベストアンサー

hiddenがたくさん並ぶのが嫌であれば#1さんのおっしゃられる通りセッションを使うのが良いかと思います。

$hogeが以下のような配列だとして、
$hoge = array("aaa","bbb","ccc");
-----渡すphp-----
session_start();
for($i=0;$i<count($hoge);$i++){
$_SESSION['hoge'][] = $hoge[$i];
}
といった感じに格納して
-----受けとるphp-----
session_start();
$gethoge = $_SESSION['hoge'];
for($i=0;$i<count($gethoge);$i++){
やりたい処理;
}

でいけるかと思います。


人気Q&Aランキング

おすすめ情報