スレッド表示 | フラット表示〕 全トピック 920 件中 734 番目 次≫ ≪前

MySQLで使いたいのですが・・・

created: 2003-11-05 01:10 | modified: 2003-11-20 16:47 | reply: 17

[884] MySQLで使いたいのですが・・・

user: ジョイ | created: 2003-11-05 01:10
皆さんのやりとりを参考にさせていただいております、又親切丁寧なご回答に感心しております。

私は今、Flash+php+MySQL で簡単な住所録を作っていますがなかなかうまくいきません。
そこでお尋ねしますが Postgre用のPhpがあるのですが これをMySQL用にはできないでしょうか 因みに以下にPhpの検索部分だけを載せますので なんとかよろしくご教授下さい。


<?php
// pg_exec、pc_numrows等は、4.2.0以降ではpg_query、pg_num_rowsに修正すること。
if (PHP_VERSION >= '4.1.0') {
$addressmode =$_POST["addressmode"];
$id = $_POST["id"];
$simei = $_POST["simei"];
$yomi = $_POST["yomi"];
$busho1 = $_POST["busho1"];
$busho2 = $_POST["busho2"];
$company = $_POST["company"];
$zipcode = $_POST["zipcode"];
$address1 = $_POST["address1"];
$address2 = $_POST["address2"];
$tel = $_POST["tel"];
$fax = $_POST["fax"];
$keitai = $_POST["keitai"];
}
$simei = mb_convert_encoding($simei, "EUC-JP", "UTF-8");
$yomi = mb_convert_encoding($yomi, "EUC-JP", "UTF-8");
$busho1 = mb_convert_encoding($busho1, "EUC-JP", "UTF-8");
$busho2 = mb_convert_encoding($busho2, "EUC-JP", "UTF-8");
$company = mb_convert_encoding($company, "EUC-JP", "UTF-8");
$address1 = mb_convert_encoding($address1, "EUC-JP", "UTF-8");
$address2 = mb_convert_encoding($address2, "EUC-JP", "UTF-8");
// [検索]ボタンで呼び出されたら
if ($addressmode == "search") {
// データベースへ接続する
if ($dbHandle = pg_connect("host=localhost port=5432 dbname=mydb")) {
// クエリー文を作成する
$sql = "SELECT * FROM addrsbook "
."WHERE simei LIKE '%$simei%'"
." AND yomi LIKE '%$yomi%' AND busho1 LIKE '%$busho1%'"
." AND busho2 LIKE '%$busho2%' AND company LIKE '%$company%'"
." AND zipcode LIKE '%$zipcode%' AND address1 LIKE '%$address1%'"
." AND address2 LIKE '%$address2%' AND tel LIKE '%$tel%'"
." AND fax LIKE '%$fax%' AND keitai LIKE '%$keitai%'"
."ORDER BY yomi";
// クエリーを実行する
if ($result = pg_exec($dbHandle, $sql)) {
$resultNumRows = pg_numrows($result);
if ($resultNumRows >= 1) {
$rowCount = 0;
$utfunderscore = mb_convert_encoding("_", "UTF-8", "EUC-JP");
while ($rowCount < $resultNumRows) {
$row = pg_fetch_object($result, $rowCount);
$resultstring .= "&result$rowCount=" . $id = $row->id . $utfunderscore
. mb_convert_encoding($row->simei, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->yomi, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->busho1, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->busho2, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->company, "UTF-8", "EUC-JP") . $utfunderscore
. $row->zipcode . $utfunderscore
. mb_convert_encoding($row->address1, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->address2, "UTF-8", "EUC-JP") . $utfunderscore
. $row->tel . $utfunderscore
. $row->fax . $utfunderscore
. $row->keitai;
$rowCount++;
}
echo "resultNumRows=" . $resultNumRows . $resultstring;
} else {
echo "resultNumRows=0";
}
} else {
echo "result: can't exec SQL";
}
} else {
echo "result: database connect error";
}
// [追加]ボタンが押されたら。なお、二重登録はチェックしていない。=======================
} else if ($addressmode == "append") {
// データベースへ接続する
reply: 887 返信 編集 削除

[887] 質問です。

user: ゆうじ | created: 2003-11-05 02:45
ジョイさん、こんばんは。

> なんとかよろしくご教授下さい。

MySQLに改造することは可能でしょうが、
何を教授すればよいのかわかりませんでした。
大変ふがいない管理人で申し訳ありません。
何を教授(教示)すれば良いのかお知らせいただけますでしょうか。
Parent: 884  reply: 889 返信 編集 削除

[889] 大変失礼しました。

user: ジョイ | created: 2003-11-05 17:27
質問の仕方が悪かったです申し訳有りません。

一応MySQLの関数に換えたのですが動いてくれません 何が悪いのか解りません勿論Flashとの関わりも有ると思いますが、こちらは書籍に付いていた物で何もさわっていないので問題は無いと思います
以下のphpの(一部)で、あと何処を触ればMySQL用になるのかをお尋ねしたいのですが・・・ 宜しくお願いいたします。


<?php
// pg_exec、pc_numrows等は、4.2.0以降ではpg_query、pg_num_rowsに修正すること。
if (PHP_VERSION >= '4.1.0') {
$addressmode = "search";

$id = $_POST["id"];
$simei = $_POST["simei"];
$yomi = $_POST["yomi"];
$busho1 = $_POST["busho1"];
$busho2 = $_POST["busho2"];
$company = $_POST["company"];
$zipcode = $_POST["zipcode"];
$address1 = $_POST["address1"];
$address2 = $_POST["address2"];
$tel = $_POST["tel"];
$fax = $_POST["fax"];
$keitai = $_POST["keitai"];
}
$simei = mb_convert_encoding($simei, "EUC-JP", "UTF-8");
$yomi = mb_convert_encoding($yomi, "EUC-JP", "UTF-8");
$busho1 = mb_convert_encoding($busho1, "EUC-JP", "UTF-8");
$busho2 = mb_convert_encoding($busho2, "EUC-JP", "UTF-8");
$company = mb_convert_encoding($company, "EUC-JP", "UTF-8");
$address1 = mb_convert_encoding($address1, "EUC-JP", "UTF-8");
$address2 = mb_convert_encoding($address2, "EUC-JP", "UTF-8");
// [検索]ボタンで呼び出されたら
if ($addressmode == "search") {
// データベースへ接続する
if ($dbHandle = mysql_connect("localhost","chap3dbu","chap3pass")) {

// クエリー文を作成する
$sql = "SELECT * FROM members "
."WHERE simei LIKE '%$simei%'"
." AND yomi LIKE '%$yomi%' AND busho1 LIKE '%$busho1%'"
." AND busho2 LIKE '%$busho2%' AND company LIKE '%$company%'"
." AND zipcode LIKE '%$zipcode%' AND address1 LIKE '%$address1%'"
." AND address2 LIKE '%$address2%' AND tel LIKE '%$tel%'"
." AND fax LIKE '%$fax%' AND keitai LIKE '%$keitai%'"
."ORDER BY yomi";
// クエリーを実行する
if ($result = mysql_query($dbHandle, $sql)) {

$resultNumRows = mysql_num_rows($result);

if ($resultNumRows >= 1) {
$rowCount = 0;
$utfunderscore = mb_convert_encoding("_", "UTF-8", "EUC-JP");
while ($rowCount < $resultNumRows) {
$row = mysql_fetch_object($result, $rowCount);

$resultstring .= "&result$rowCount=" . $id = $row->id . $utfunderscore
. mb_convert_encoding($row->simei, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->yomi, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->busho1, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->busho2, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->company, "UTF-8", "EUC-JP") . $utfunderscore
. $row->zipcode . $utfunderscore
. mb_convert_encoding($row->address1, "UTF-8", "EUC-JP") . $utfunderscore
. mb_convert_encoding($row->address2, "UTF-8", "EUC-JP") . $utfunderscore
. $row->tel . $utfunderscore
. $row->fax . $utfunderscore
. $row->keitai;
$rowCount++;
}
echo "resultNumRows=" . $resultNumRows . $resultstring;
} else {
echo "resultNumRows=0";
}
} else {
echo "result: can't exec SQL";
}
} else {
echo "result: database connect error";
}
}
Parent: 887  reply: 890 941 返信 編集 削除

[890] 現象をお知らせ下さい

user: ゆうじ | created: 2003-11-05 19:13
ジョイさん、こんばんは。

> 一応MySQLの関数に換えたのですが動いてくれません 何が悪いのか解りません・・・
> ・・・中略・・・
> あと何処を触ればMySQL用になるのかをお尋ねしたいのですが・・・

せっかく挙げていただいたソースですが目を通していません。
何がおかしいのかわかりたい方のお手伝いなら
喜んで協力させていただきますが、
「ココがおかしいようなので動くように直してください」
ということでしたら、お断りいたします。

きっとそのつもりでは無いのでしょうが、
そのようにとられてもおかしくない質問内容になってます。

# 過ぎた暴言、どうぞお許しください。


先ずは、「動いてくれない」という現象が、
具体的にどういう現象なのか、よく把握してお知らせください。

例えば、このようなエラーメッセージが出るとか、出ないとか。
データベースの接続までは確認できたが値が取り出せない。などです。

先ずは、動かない原因に、あたりをつけることからはじめましょう。
Parent: 889  reply: 892 返信 編集 削除

[892] またまた申し訳ありません

user: ジョイ | created: 2003-11-05 23:28
勿論他力本願的なことは考えてはおらずあくまで習得していきたいとの思いだけです。
当たり前のことを書きませんでした(とほほ)


phpだけでテストすると  $rowCount++; のところで

Parse error: parse error in c:\phpdev\www\joy\test214.php on line 43

とエラーが表示されます何かがマッチしてないのではと思いますが・・・何故これが出るのか調べたのですがイマイチ解りません

それと全体を通してMySQL用としては間違っていないかと言うことをお尋ねしたいのですが・・。

よろしくお願いします。
Parent: 890  reply: 893 返信 編集 削除

[893] こちらこそ失礼しました。

user: ゆうじ | created: 2003-11-06 01:23
> 勿論他力本願的なことは考えてはおらずあくまで習得していきたいとの思いだけです。
> 当たり前のことを書きませんでした(とほほ)

こちらこそ大変失礼いたしました。
過ぎた発言、申し訳けありませんでした。


さて、先にMySQLの処理で気づいたところを。

データベースへの接続と、クエリー実行の間に、
データベースの選択が抜けてますね。
処理の流れは、ココ以外、大丈夫のようです。

mssql_select_db("データベース名", $dbHandle)
http://jp2.php.net/manual/ja/function.mysql-select-db.php

あと、クエリ実行部分は、引数が反対のようです。

mysql_query($dbHandle, $sql)
http://jp2.php.net/manual/ja/function.mysql-query.php


Parse error ですが、
セミコロンの抜けとか、大括弧の閉じ忘れとか、
関数に$を付けていたりとか(よく私がやるやつですが)
無いようですので、何でしょうね。

ちょっと気になるのは、クエリ作成のところの
'%$simei%'  ←この記述の仕方です。

よく、日付をフォーマットしたものを出力しようとした時、
echo "$yyyy-$mm-$dd"; とやると、引き算の答えが出力されるように、
変数 $simei のすぐ後に %(剰余を求める演算子) が来ていますので、
PHPは、こんな感じの式(?)を実行しようとしているのかもしれません。

$simei % '

ここのところは、大括弧で変数を囲んでしまうか、'%{$simei}%'
文字列と変数をピリオドできっちり分けてしまった方がいいかもしれません。

追記:
同じ理由ですが、エラー行からするとこちらが原因かもしれませんね。

> $resultstring .= "&result$rowCount=" . $id = $row->id . $utfunderscore
 ↓
$rowCount=" .・・・・"
Parent: 892  reply: 922 返信 編集 削除

[922] 遅くなりました。

user: ジョイ | created: 2003-11-08 11:49
先日ご指摘していただいたようにいろいろやってみました。

先ずデータが3つ入っています。

>mssql_select_db("データベース名",  
$dbHandle)

>あと、クエリ実行部分は、引数が反対のようです。

>mysql_query($dbHandle, $sql)

のところをそのようにしました

>ちょっと気になるのは、クエリ作成のところの
'%$simei%'  ←この記述の仕方です。


この記述は 検索の時に $simeiを含むの意味みたいです{ を入れても変わりませんでした。

尚、parse error は解消されました。

私が気になるのは $sql = のところなんですが・・・

// クエリー文を作成する
$sql = "SELECT * FROM members "
."WHERE simei LIKE '%$simei%'"
//." AND yomi LIKE '%$yomi%' AND busho1 LIKE '%$busho1%'"
//." AND busho2 LIKE '%$busho2%' AND company LIKE '%$company%'"
//." AND zipcode LIKE '%$zipcode%' AND address1 LIKE '%$address1%'"
//." AND address2 LIKE '%$address2%' AND tel LIKE '%$tel%'"
//." AND fax LIKE '%$fax%' AND keitai LIKE '%$keitai%'"
."ORDER BY yomi";

のようにすると echo = での表示が3になるのですが //が無いと 0の表示になるのです、それがどうも気に入りません

// クエリーを実行する
if ($result = mysql_query($sql,$dbHandle)) {
$resultNumRows = mysql_num_rows($result);
echo "レコード数は $resultNumRows です。";


MySQLではだめなんですかね??
そんなことはないとは思うんですが・・・・
そこのところを何卒ご教授ください おねがいいたします。 
Parent: 893  reply: 925 返信 編集 削除

[925] 何がだめなんでしょう?

user: ゆうじ | created: 2003-11-08 13:54
何がだめなんでしょう?

クエリー作成部分が怪しいと思うのでしたら、
レコード数が云々の前に、
クエリー作成後に $sql を表示すれば直接確かめられると思います。
Parent: 922  reply: 938 返信 編集 削除

[938] 初歩的ですみませんが・・・

user: ジョイ | created: 2003-11-09 00:19
誠にすみませんが $sql を直接確認するにはどうすればいいのでしょうか?(トホホ)

教えてください。
Parent: 925  reply: 939 返信 編集 削除

[939] echo 変数;

user: ゆうじ | created: 2003-11-09 00:47
echo $sql;

SQL文もただのテキストにすぎませんので、
echo でブラウザに表示されます。
ガンバ!
Parent: 938  返信 編集 削除

[941] 別の切り口

user: うなさん | created: 2003-11-09 12:03
少し視点を変えて.

> echo = での表示が3になるのですが //が無いと 0の表示になるのです、
> それがどうも気に入りません

単純に該当するレコードが無いだけじゃないですか?

これだけANDで検索したら,どこか1つハズしてもHITしないですよ.
例えば,DBのzipcodeがint型なのに
$zipcode = $_POST["zipcode"]; に「-」があるなどで
0件になってしまいます。
かなり無理のあるSQLだと思います.これだと,検索条件など不要なくらい?
すべての入力値がDBのテーブル型に一致しないと無理ですよ.

※作り手は内容を知っているのでまずエラーしませんが,ユーザーはそうはいかない.

例えばDB側で simei,tel を unique not null にしてこれと名前だけで検索するとかして,少しSQLを絞った方が良いと思います.
Parent: 889  reply: 953 返信 編集 削除

[953] ありがとうございます

user: ジョイ | created: 2003-11-10 03:07
うなさん ご指摘ほんとにありがとうございます。
”只今勉強中にはなかなかうまくいきませんw”

Postgre用をMySQL用にするのがこんなに難しいとは・・・(単に知らないだけなのですが)

未だにごそごそやっています ゆうじさんの親切なご教示や うなさんのご指摘に感謝いたします 初心者としてとことん恥をかいてこれをなんとか習得したいと思っておりますのでどうかピントはずれでも ご教授いただけますようお願いいたします。
因みに 今変換しようとしているアプリのサンプルは以下のアドレスにある”共有アドレスブック”なのです これをなんとかしようとしているんです。

http://www.signet.co.jp/flashtest/
Parent: 941  reply: 971 返信 編集 削除

[971] サーバキャラクタ

user: ジョイ | created: 2003-11-12 09:16
あれからいろいろやってますが気になるところが出てきました。

OSはWin98 です。

my.iniで

[mysqld]
basedir=C:/mysql
datadir=C:/mysql/data
default-character-set=sjis

[mysql]
default-character-set=sjis

[mysqldump]
default-character-set=sjis

[WinMySQLadmin]
Server=C:/MYSQL/bin/mysqld-opt.exe

と設定しているにもかかわらず Dosからみてみると(statusで)Client charactersetがSJIS Server charactersetが Latin1になっています これが原因で検索ができないのでは???

my.iniで設定すればそのようになるのではないかと思ってましたが 違うのでしょうか?

教えていただけますか。
Parent: 953  reply: 978 返信 編集 削除

[978] SJIS EUC どちらでしょう。

user: ゆうじ | created: 2003-11-12 13:24
以前あげていただいたサンプルでは、
入力データを EUC-JP にしてたようですが、
default-character-set=sjis
で良いのでしょうか?
Parent: 971  reply: 982 返信 編集 削除

[982] いろいろやってますw

user: ジョイ | created: 2003-11-12 17:48
そうです EUC-JP でした。

うまくいかないので ブラウザでやってみようと思ったんですが・・・

本来は flash+php+mysql の組み合わせです
確か FlashはUTF?8とのことですが
mysqlは 何になりますか(EUC?JPですよね)
この組み合わせの場合は どのように文字コードを設定するのがいいのかがわかりません ある本では 両方SJISにするとか書いてあります(Flash 使用の本ですが)
頭がこんがらがってしまいます・・・


良い方法を教えてください。
Parent: 978  reply: 983 返信 編集 削除

[983] 起動オプション

user: hamaji | created: 2003-11-12 21:34
日本語の設定by 秀和システム『MySQL活用ガイド』
抜粋
....
Window版MySQLバイナリでは、何も指定しない場合には文字コードはlatin1になっています。
これをシフトJIS(日本語)に変えるためには、

・mysqld-nt.exeの(mysqld.exe)引数に--default-characterset=sjisを指定する。
・my.cnf(my.ini)ファイルに、--default-characterset=sjisを記述する。
の2つの方法があります。これは、たとえば
c:\mysql\bin>mysqld --default-character-set=sjis
とオプションを指定して実行することは、my.cnf、my.iniファイルの中に次のように書くことと同じになります。
[mysqld]
default-character-set=sjis
my.conf(my.ini)に記述した場合先のコマンドは、
c:\mysql\bin>mysqld
と実行するだけでdefault-character-set=sjisが自動的に指定されたことになります。したがって、・・・・・・・
以下続く。。。

となっていますがsjisじゃないということなので一度mysqld起動時に、
引数を指定してやってみてはいかがでしょう。
私はMySQL自動サービス&WinMySQLAdmin.exe自動起動でmy.iniもWinMySQLAdminから
設定したので、確かめてはないですが。
一度お試しください。
Parent: 982  reply: 1054 返信 編集 削除

[1054] お久しぶりです

user: ジョイ | created: 2003-11-20 05:33
前回教えていただいたようにやったのですが反応してくれません。
えらい時間掛かってますが未だにだめですww

今回ujisを指定してやってますがDOSコマンドで status をしてやると以下のメッセージが出てきます、どうしても Server Characterset が latin1 のままでかわりません

mysql> status
------------------------
C:\MYSQL\BIN\MYSQL.EXE Ver 11.18 Distrib 3.23.58, for Win95/Win98 (i32)

Connection id: 1
Current database:
Current user: ODBC@localhost
Server version: 3,23,58-max-debug
Protocol version: 10
Connection: localhost via TCP/IP
Client characterset: ujis
Server characterset: latin1
TCP port: 3306
Uptime: 13 min 1 sec

Threads: 1 Questions:2 Slow queries:0 Opens:6 Flush tables:1 Open tables:0 Queries per second avg:0.003 Memory in use:16496K Max memory used:16512K
---------------------

mysql>


因みに my.ini は次の通りです。

[mysqld]
basedir=C:/mysql
datadir=C:/mysql/data
default-character-set=ujis

[mysql]
default-character-set=ujis

[mysql-dump]
default-character-set=ujis


[WinMySQLadmin]
Server=C:/MYSQL/bin/mysqld.exe


なんでかわらないのか解りません ご指導いただけませんか。よろしくお願いいたします。
Parent: 983  reply: 1057 返信 編集 削除

[1057] max-debug は何者?

user: ゆうじ | created: 2003-11-20 16:47
ごぶさたしております。

1点、気になるのは、

> Server version: 3,23,58-max-debug

> [mysqld]
> basedir=C:/mysql
> datadir=C:/mysql/data
> default-character-set=ujis

my.ini では、[mysqld] グループで、
default-character-set=ujis を設定しているにもかかわらず、
実際稼動しているのは、max-debug 。

ココが食い違ってるので、my.ini の設定が
反映されないのではないでしょうか。
(注:推測です)

私は使ったことがないので、-max-debug が
何をするものかは知りませんが、
必要でないのなら、mysqld.exe を使用した方が良いのではないでしょうか。


それから、打ち間違いだと思いますが、
[mysql-dump] は、[mysqldump]が正しいと思います。
Parent: 1054  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 734 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑