PHP + MySQL

このエントリーをはてなブックマークに追加
1ECY
そろそろPHP + MySQLについても語ってほしい脳
2echo : 2001/02/28(水) 02:41 ID:7JL8XSEA
ソレハドウカナ?
3初期不良 : 2001/02/28(水) 13:10 ID:OoXGXBxY
my もほとんど扱い方としては pg と変わらないの?
両方インストール済んでこれから試そうってところなんだけど。
4初期不良 : 2001/02/28(水) 13:12 ID:???
あ、Postgre の方はそこら辺に公開されてた掲示板 PHP スクリプトで
試してみたんですけど、重くて掲示板には向いてないと思ったので...
5名無しさん@お腹いっぱい。 : 2001/02/28(水) 14:13 ID:???
myとかpgとか中途半端な略はやめようよ。
厨房くさくてかなわん。
6名無しさん@お腹いっぱい。 : 2001/02/28(水) 17:19 ID:.g9DxqG.
イヤ、わかりやすくていいよ。うん。
7union使えないの? : 2001/03/02(金) 00:04 ID:HvtKyjzA
とりあえず打倒pg??
8名無しさん : 2001/03/02(金) 00:46 ID:???
打倒とか言うと荒れますよ。

女の子と話していて、他の女の話をすると異常に機嫌が悪くなることがある。
「なんで他の女の話を持ち出すの?」とかって。
それと同じ感じで、PostgreSQL の話をしている時に、Oracle などとの比較を
持ち出されると過剰反応する女々しい人が多いので気をつけましょう。
9名無しさん@お腹いっぱい。 : 2001/03/02(金) 01:04 ID:???
>>8
DBの話をしているのに、なんで女の話を持ち出すの?
108 : 2001/03/02(金) 01:31 ID:???
>>9
荒れるともったいないので。
と思ったけど、よけい荒れちゃいそうだね。ごめんね。
さぁ、続けて下さい。
11名無しさん@お腹いっぱい。 : 2001/03/02(金) 05:33 ID:???
陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰●陰部陰部陰部陰部●部陰部陰部陰部陰●陰部陰部
陰部陰部●部陰部陰●●●●●●●陰部陰部●部陰部陰部
陰部陰部陰●陰●●部陰部●部陰部●●陰●陰部陰部陰部
陰部陰部陰部●部陰部陰部●部陰部陰●陰部陰部陰部陰部
陰部陰部陰●陰部陰部陰部●部陰部陰部●部陰部陰部陰部
陰部陰部陰●陰部陰部●●●●●部陰部陰●陰部陰部陰部
陰部陰部●部陰部陰●陰部●部陰●陰部陰部●部陰部陰部
陰部陰部●部陰部●部陰部●部陰部●部陰部●部陰部陰部
陰部陰部●部陰●陰部陰部●部陰部陰●陰部●部陰部陰部
陰部陰●陰部陰●陰部陰部●部陰部陰●陰部陰●●●陰部
陰●●●陰部陰●陰部陰部●部陰部陰●陰部陰●陰部陰部
陰部陰部●部陰●陰部陰部●部陰部陰●部陰●部陰部陰部
陰部陰部●部陰部●部陰部●部陰部●陰部陰●部陰部陰部
陰部陰部●部陰部陰●陰部●部陰●部陰部陰●部陰部陰部
陰部陰部陰●陰部陰部●●●●●陰部陰部●陰部陰部陰部
陰部陰部陰●陰部陰部陰部●部陰部陰部陰●陰部陰部陰部
陰部陰部陰部●部陰部陰部●部陰部陰部●部陰部陰部陰部
陰部陰部陰●陰●●部陰部●部陰部●●陰●陰部陰部陰部
陰部陰部●部陰部陰●●●●●●●陰部陰部●部陰部陰部
陰部陰●陰部陰部陰部陰部●部陰部陰部陰部陰●陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部

12名無しさん@お腹いっぱい。 : 2001/03/02(金) 13:45 ID:???
日本MySQLユーザ会
http://www.mysql.gr.jp/
13名無しさん@お蝮いっぱい。 : 2001/03/02(金) 14:24 ID:???
MySQLユーザ会が何ヶ月か前に出した本をすごく期待して
買ったけど、なんかいまひとつでした。
「詳しくはマニュアル参照しろ」ばかりなんだもん。
だから今はマニュアル見てます。
14名無しさん : 2001/03/03(土) 02:21 ID:72K.1y6U
最近買った本に「MySQLはデータを更新するユーザーが少ないところで
多くのデータを検索したい時にはベストの選択だが、多くのユーザーが
一度に登録を行うような場合は、他のRDBMSが向いてる」とありました。
2chのような掲示板をMySQLで作るのは向いてないのでしょうか?
15名無しさん@お腹いっぱい。 : 2001/03/03(土) 02:33 ID:1oeRYcx.
>>13
初心者むけだから...
>>14
ロックが弱いから...だがな、プログラマーの力量がそこで大きく試されるぞ。
16名無しさん : 2001/03/03(土) 13:51 ID:???
例えばどういう点ですか?<力量
17名無しさん@お腹いっぱい。 : 2001/03/03(土) 16:31 ID:QuMjeOvE
工夫すればいいだけってこと。
あとは考えて。
18名無しさん@お腹いっぱい。 : 2001/03/08(木) 14:38 ID:0mJ0iIgM
MySQLを./configureするときに、
変数のサイズをチェックするところでこけるんだけど、
対処法知らない?

ちなみに、同じ現象がIRIXとFreeBSDで発生した。
19初期不良 : 2001/03/10(土) 07:47 ID:/BpOSDls
何でマンモス本にも日本語マニュアルとか
http://www.asakawa.ne.jp/doc/php/ja/sjis/ref.mysql.html
にも mysql_dbname() が載ってないの?
無いわけないだろうと思って検索かけてみて見つけたけど...
mysql_db_name() だったりして、まあどっちでも動くわけだけど
この辺ってどうなってるの?
20電動ナナシ : 2001/03/10(土) 12:24 ID:???
PHP サイトがリニューアルしたね。ずいぶんすっきりした。

>>19
本家のページに出てないから仕方が無いんじゃない?
http://www.php.net/manual/en/ref.mysql.php
21名無しさん@お腹いっぱい。 : 2001/03/10(土) 17:20 ID:yWMbOMmQ
>>16
わかりやすい一例ね。普通はさ
1.ロック
2.更新
3.アンロック
とやるわけでしょ。MySQLの場合は、このロックしてから放すまでの時間を最
小限に抑えないとダメ。あと、極力ロックしない努力も必要。
とりあえずロックしておけって方針だと、簡単に使い物にならなくなるよ
MySQLにはlast_insert_idとかreplaceとか、あるいはget_lockとかロック
しないための機能がいっぱいあるので、考えよう
2216 : 2001/03/10(土) 20:42 ID:???
PHP+MySQLを始めて間もないためよくわかりませんが
これまで明示的?なロックは使ったことがないです。
持ってる本には書いてなかったし。
last_insert_id、replace、get_lock を調べてみます。
2321 : 2001/03/10(土) 22:13 ID:yWMbOMmQ
>>16 >>22
おーい。だめじゃーん
MySQLはフツーのデータベースと違って明示的にロックしないと何もロックして
くれないよー

俺がさっき書いたget_lockとかは中級以上の知識だけれど、基本はちゃんと抑え
ないとダメ
基本はあくまで、更新されちゃ困るレコードはロックすることだよ。
MySQLの実際のロックはlock tablesで行うので、こいつを勉強しよう。
get_lockとは名前は似てても全然違うので注意。

それで、ロック中の処理をできるだけ短くするように心がけよう。よほど
アクセスの多い場合でなければ、これで対応できるはず。
2416 : 2001/03/10(土) 23:39 ID:YyLYmM/k
ありがとうございます。
これまで、insert や update などがそれほどないものしか作った
ことがなかったので、偶然うまくいってただけだったようですね。
このままいってたら今後やばかったです。
勉強になりました。
25名無しさん@お腹いっぱい。 : 2001/03/11(日) 00:11 ID:???
>>23
>俺がさっき書いたget_lockとかは中級以上の知識だけれど、基本はちゃんと抑え
>ないとダメ

別に煽るわけではないが、
ロックの知識なんて、基礎中の基礎だと思うが...
26初期不良 : 2001/03/11(日) 00:41 ID:P7zWaamc
lock tables だとタイムアウト無しで延々と待つらしいけど
これが問題なのか?俺も MySQL 使い始めなり
27初期不良 : 2001/03/11(日) 00:44 ID:???
って書いちゃったけどとりあえずこれ読みます
http://www.softagency.co.jp/mysql/Manual/html/manual.ja_Performance.html#Table_locking
2816 : 2001/03/11(日) 01:13 ID:???
>ロックの知識なんて、基礎中の基礎だと思うが...

本に載ってたサンプルとかしか見てなかったわけです。
で、ロックなんて書いてなかったので、MySQLがロックしてくれるんだ
と勝手に思ってました。
とりあえず、lock tables xxx write;と
unlock tables;入れて確認してます。
間にsleep()してテストしてますが、いいんですよね。
私もマニュアルちゃんと読もうかと思います。
ためになる煽りは歓迎です。よろしゅう。
2921 : 2001/03/11(日) 12:16 ID:LewkJAXY
>>25
そうなんだけれど、それを知らずに作っちまう奴もいる。俺が前に
あるサイトの運用を引き継いだときに、まるでロックのこと意識し
てないつくりになってて、データの不整合がおきまくりで、空いた
口が塞がらなかった。

>>26
問題としては、テーブルごとロックしか出来ないっていうのが第一
の問題。一人のユーザしか更新できないでしょ。
第二の問題がタイムアウトできないことだね。
mysql_pconnect()で接続して、ロックしている間に落ちるよう
なプログラムを書くとロックしっぱなし・・・これはPHP3の話だ
けどね。PHP4は使ってないのでわかんない
30電動ナナシ : 2001/03/11(日) 21:26 ID:???
>>29
ロックがタイムアウトしないのか・・・そりゃひどいねえ。

マニュアル読むと、
・接続が閉じられるか、当該プロセスが Lock を発行しない限り Lock は有効
・他のプロセスの Lock 要求はタイムアウトなしで待たされる
みたいだね。ううむ。

プログラムが落ちて httpd も一緒に落ちていれば問題ないけど、そうじゃない
場合(エラーによる異常終了)とかは問題だよねえ。

当面の回避策としては、
・pConnect は使わない
・適当な(アプリケーションから使わない)テーブルをいくつか用意して、
 スクリプトの先頭で lock/unlock する(そうすれば直前のロックが解除される)
 # httpd のプロセス数だけテーブルを用意して、互いに lock するテーブルが
  重ならないようにランダムに割り当てる
という感じになるのかな。
31名無しさん@お腹いっぱい。 : 2001/03/11(日) 22:45 ID:LewkJAXY
get_lock()はタイムアウトを設定できるよ
ただ、こいつは別にデータそのものをロックするわけじゃないという曲者
「こういうデータを更新するときには、こういう文字列でget_lock()を
かける」とかって、明確なルールを作る。
頻繁にかかる更新はget_lock()で、そうでない更新はlock tablesでなん
ていうのも面白いと思う
32名無しさん : 2001/03/14(水) 00:13 ID:rKDduL6w
いまいちイメージが湧かないのですが、頻繁に更新するようなものって
例えばどのようなものがありますか?
サイトの例などあります?
33名無しさん@お腹いっぱい。 : 2001/03/14(水) 01:31 ID:Ko0xDo86
lock を使わなければいいのですよ。
これの本当の意味がわかる奴は少数だと思うけども、
わからない奴は1週間くらいじっくり考えてみな。
それでもわからない奴は、オラクル使った方がいいよ。金かかるけど。
34名無しさん@お腹いっぱい。 : 2001/03/14(水) 08:46 ID:QuOcp78c
ヒントおくれ。
35名無しさん@お腹いっぱい。 : 2001/03/14(水) 10:57 ID:iBBziXMI
ヒント1:ロックすると遅い
36名無しさんX : 2001/03/14(水) 13:04 ID:lPpmvEZA
約2日かかってlockの意味がわかった。
これでぼくも中級?
37名無しさん@お腹いっぱい。 : 2001/03/14(水) 22:38 ID:8esm0hZM
>>32
Webに限った話をすると、頻繁にupdateと言うのは少ないかもね
例えば、会員サイトでの会員情報の更新とかはどう?
規模が大きければ、かなりの頻度だと思うが・・・

>>34
マニュアルにヒントっぽいことが書いてあったと思った
38名無しさん@お腹いっぱい。 : 2001/03/14(水) 23:42 ID:BPeRdqhQ
PostgreSQLの方はロック処理いらないの?
39電動ナナシ : 2001/03/15(木) 02:44 ID:???
>>37
これのこと?
http://www.mysql.gr.jp/jpdoc/3.23/manual.ja_Compatibility.html#Commit-rollback

今の MySQL には Transaction 機能あるから、ロックにこだわる必要性はあんまり
ないと思うんだけど、Transaction に何か問題があるの?

>>38
Transaction 機能 (begin/commit/rollback) 使えばよい。
40名無しさん@お腹いっぱい。 : 2001/03/15(木) 17:49 ID:7406rnUk
>>39
MySQLてトランザクションを有効にするとパフォーマンスが落ちるって
小耳に挟んだけど、どうなんだろ。
41名無しさん@お腹いっぱい。 : 2001/03/17(土) 08:40 ID:WxXggeow
自分はトランザクションを利用しないケースを逆に知らないので、
トランザクションなしで作れって言われたら怖いなぁ。
あと、トランザクションがあってもロック関係の知識はいるでしょ。
DBMSによってまちまちだと思うけど。
42名無しさん@お腹いっぱい。 : 2001/03/18(日) 03:56 ID:Fu.3AzE6
トランザクション使う初心者はオラクル使え
43名無しさん@お腹いっぱい。 : 2001/03/18(日) 05:02 ID:yD0pUbjk
なんで、トランザクション使うのは初心者なのか意味不明
44anonymous : 2001/03/18(日) 05:17 ID:???
春休み厨房の煽りだろ、どうせ。
45名無しさん@お腹いっぱい。 : 2001/03/18(日) 15:15 ID:4Intns.Y
>>40
というか、もともと参照が中心だからテーブルロックしか
ないんじゃなかった?PostgreSQLは標準で行レベルロック
だから、頻繁に参照がある仕組みとかだと、意外と快適。
MySQLも最近トランザクションが取り入れられたみたいだけど、
やっぱり実績が無いのが不安だよね。
46名無しさん@お腹いっぱい。 : 2001/03/19(月) 02:19 ID:6Cw7I1x2
MySQLのトランザクションって、参照の一貫性の機能はあるの?
Begin Tran した時点のデータのみを参照してくれるって機能。
参照の一貫性というのかどうかは知らないのだが。。。
47電動ナナシ : 2001/03/19(月) 04:00 ID:???
MySQL の実装は分からないけど、用語についてだけ。

DirtyRead (Commit 前のデータが見えてしまう) や、Read Commited
(Commit 後のデータは見えるが、それ以前のは見えない) や、Serializable
(繰り返し Query をかけて同じ結果が得られる) といったやつだよね。
隔離度 (Degree of Isolation) というみたい。
『データベースチューニング 256 の鉄則・下巻』(日経 BP) p.335
 http://bpstore.nikkeibp.co.jp/item/main/148222805860.html
『トランザクション処理システム入門』(日経 BP)
 http://bpstore.nikkeibp.co.jp/item/main/148222802680.html
が参考になると思う。
48電動ナナシ : 2001/03/20(火) 06:52 ID:???
>>45
MySQL の機能ってよりも、MySQL が依存している SleepyCat's Berkeley DB の
機能だよね。BerkeleyDB に Transaction 機能が入ったら MySQL で Transaction の
サポートが可能になったという表現のほうが正しいんじゃない?
http://www.sleepycat.com/docs/ref/txn/intro.html

以前 Zend か MySQL のサイトで MySQL のエンジンに Zend Engine 組み込んで
トランザクションとストアドプロシージャをサポートするってコメントを見たけど、
あれはどうなったんだろう。
49名無しさん@お腹いっぱい。 : 2001/03/21(水) 00:46 ID:yuYgvdSI
>>48
細かい話だけれど、MySQLがBerkley DBを使うようになったのは
トランザクションを実装したかったからじゃないんだっけ?
もとからBerkley DBを使ってたわけじゃないよね?
50名無しさん@お腹いっぱい。 : 2001/03/21(水) 01:03 ID:yuYgvdSI
>>40 >>45
ええと、トランザクションを使うためにはテーブル作成のときにはBDBという形式
を選択しないといけないんだけれど、このテーブル形式っていろいろとダメなとこ
ろも多いみたい。
MyISAM(デフォルトテーブル形式)よりは遅いですとマニュアルにはっきり書いて
あるし、痛いのがvarcharとかTEXTなどのカラムにインデックスを作れないことかな?
ちなみにMyISAMでvarcharのカラムにインデックス作って検索するとめちゃめちゃ速
いよ

個人的にはMySQLを使うのならBDBを使うのはあんまり賢くないように思う。
トランザクションが欲しいのならOracleなりSybaseなりがいいのでは?
51名無しさん@お腹いっぱい。 : 2001/03/23(金) 05:15 ID:mpGnIO2.
http://www.mysql.com/information/crash-me.php
の結果の最後のほうの
max table row length (without blobs)
table row length with nulls (without blobs)
ってなんでしょう?
52電動ナナシ : 2001/03/23(金) 13:53 ID:???
>>51
max table row length ってのは、テーブルの各行(列数は任意)でサポート可能な
バイト長ってこと。例えば PostgreSQL 7.0 だと max table row length は
7949 ってなってるけど、これは例えば
CREATE TABLE hoge (aText VARCHAR(7950));
CREATE TABLE hoge (aText VARCHAR(4000), aText2 VARCHAR(3950));
というテーブルを定義して使えないということ。前者は一つのフィールドだけで
7949 バイト超えているし、後者は 2 つのフィールドを合計すると 7949 バイトを
超える。
CREATE TABLE hoge (aText TEXT);
ってのは作れるけど、いざ 7950 バイト以上のレコードを挿入しようとすると
エラーになる。

table row length with nulls ってのはよく分からん。
blob っては Binary Large Object のこと。画像とかファイルとかそういった
大きなものを想像して欲しい。通常 blob はレコード長の制限が大幅に緩和
されている。
53名無しさん@お腹いっぱい。 : 2001/03/23(金) 18:31 ID:Y5FYO2Rs
null 付きだろ、単に。
54電動ナナシ : 2001/03/23(金) 21:27 ID:???
CREATE TABLE (hoge TEXT NOT NULL);

CREATE TABLE (hoge TEXT);
でレコード長が変わる実装ってことなの?

それともそういう意味じゃないのかな?
分からない。鬱だし脳。かぜで朦朧とする・・・。
5546 : 2001/03/23(金) 22:49 ID:phehB5uM
>>47

そうそう。
電動ナナシさん、貴重な情報ありがとう。
56名無しさん@お腹いっぱい。 : 2001/03/24(土) 01:25 ID:6pfaXILk
1bit使うしな
5751 : 2001/03/26(月) 06:32 ID:YxO9IxXk
電動ナナシさん、ありがとう。納得。
「最大の列の長さ」
まさか最大レコード数だったらどうしようかと思ったっス。馬鹿ですね。
レコード数は、ファイルサイズ限界までと考えてよいのでしょうか?

58名無しさん@お腹いっぱい。 : 2001/03/26(月) 23:45 ID:CuN7XLHg
マニュアルに書いてあるだろ、それくらい。
そんなくだらないこと質問すんな。
59はぁ : 2001/03/28(水) 22:25 ID:TfrlkPNk
DSOで PHP4 + MySQL やろうと思ってコンパイルして起動したら
下のエラーで起動できなかった。
Slackware3.6(Kernel2.2.16)だったんで MySQLインストール
する際に linuxthreads-0.7.1.tar.gz 組み込むまえまでは
正常に PHP4 を DSO で起動できてたんで、なんかファイル
かきかわっちゃたかな。解決策わかるひといる?

Apache1.3.14 + SSL1.42 + Mysql3.23.35 + PHP4.0.4pl1 + jstring
+ linuxthreads-0.7.1 + SlackwareLinux3.6(Kernel2.2.16)

コンパイルは正常終了、起動すると下のエラー
PHP4をスタティックにApacheに組み込むとコンパイル中にエラー
/usr/local/apache/bin/httpsd: can't resolve symbol '__secure_getenv'
Syntax error on line 209 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/libphp4.so into server: Unable to resolve
symbol
/usr/local/apache/bin/httpsdctl start: httpsd could not be started

60電動ナナシ : 2001/03/29(木) 02:32 ID:???
OpenSSL 入れなおしてみたら?
61名無しさん@お腹いっぱい。 : 2001/03/29(木) 04:33 ID:o/SJ2o1Y
>60
どうもありがとう。
OpenSSL(openssl-0.9.6)を含め Apache,PHP4 ひととおり
コンパイル、インストールしなおしてみましたがダメでした・・
62電動ナナシ : 2001/03/29(木) 04:58 ID:???
それって glibc の関数みたいだね。Google で "__secure_getenv" で調べると
いろいろ出てくるよ。

PHP3 でこのエラーが出るって質問もあった。その回答は「PHP の問題じゃあ
なさそうだね」だった。

glibc のヘッダファイルとライブラリのバージョンがあってないんじゃないかな。
glibc 全体を入れなおしてみたらどうなるかな。
6359です : 2001/03/30(金) 12:24 ID:dN49YUL6
以下のファイルを上書きしてみたのですが、今度はApacheとPHP4が
コンパイルできなくなってしまいました。
glibc1.tgz
(glibc-2.0.7pre6 runtime support This package contains the
shared libraries, binaries, and support files required to
run most Linux applications linked with glibc.)
glibc2.tgz
(glibc-2.0.7pre6 internationalization files International
support files for glibc -- installed in usr/share/i18n.)

libc-5.4.46.bin.tar.gz
ld.so-1.9.11.bin.tar.gz
libg++-2.7.2.8.bin.tar.gz
gcc-2.7.2.3.bin.tar.gz


Apache 1.3.14のmake途中のエラー
.o -lm -lcrypt -ldbm -ldl -L/usr/local/src/openssl-0.9.6 -lssl -lcrypto
ld: warning: libc.so.6, needed by /usr/lib/libcrypt.so, may conflict with libc.s
o.5
./gen_test_char >test_char.h
make[3]: *** [test_char.h] Error 139
make[2]: *** [subdirs] Error 1
make[2]: Leaving directory `/usr/local/src/apache_1.3.14/src'
make[1]: *** [build-std] Error 2
make[1]: Leaving directory `/usr/local/src/apache_1.3.14'
make: *** [build] Error 2

※Googleで同様のエラーを見つける事ができたのですが解決策
 ではありませんでした。(英語サイトなのでもしかしたら間
 違っているかも)


PHP4.0.4pl1のmake途中のエラー
-DAPACHE_SSL -DXML_BYTE_ORDER=21 -g -O2 -c main.c
In file included from /usr/local/src/php-4.0.4pl1/ext/standard/php_standard.h:21
,
from main.c:52:
/usr/local/src/php-4.0.4pl1/ext/standard/basic_functions.h:137: #error Need type
which holds 32 bits
make[2]: *** [main.lo] Error 1
make[2]: Leaving directory `/usr/local/src/php-4.0.4pl1/main'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/php-4.0.4pl1/main'
make: *** [all-recursive] Error 1
64名無しさん@どっと混む : 2001/03/30(金) 15:40 ID:???
>>63
そこまで環境がボロボロなんだったら、OS ごと再インストールだろう。
65名無しさん@お腹いっぱい。 : 2001/03/30(金) 23:27 ID:HL36cyJE
Apacheのコンパイルエラーは
シンボリックリンク下のように適当にやったら
とりあえずコンパイルできた。
libresolv.so.1 -> libresolv-2.0.7.so

libresolv.so.2 -> libresolv-2.0.7.so


あとはPHP4の下のエラーがなんとかなればうまくいきそうな
気がするんだけど。
PHP4.0.4pl1のmake途中のエラー
-DAPACHE_SSL -DXML_BYTE_ORDER=21 -g -O2 -c main.c
In file included from /usr/local/src/php-4.0.4pl1/ext/standard/php_standard.h:21
,
from main.c:52:
/usr/local/src/php-4.0.4pl1/ext/standard/basic_functions.h:137: #error Need type
which holds 32 bits
make[2]: *** [main.lo] Error 1
make[2]: Leaving directory `/usr/local/src/php-4.0.4pl1/main'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/php-4.0.4pl1/main'
make: *** [all-recursive] Error 1

めんどくさいのでできれば再インストールはさけたい・・といっても
4日ほどなやんでるから再インストールしたほうがよかったかも。
もう少し粘ってみます。
66名無しさん@お腹いっぱい。 : 2001/04/01(日) 02:18 ID:ECO/cxrU
もう諦めろ。無理。
67名無しさん@お腹いっぱい。 : 2001/04/01(日) 04:19 ID:???
ラチあかなかったんで FreeBSD4.2R に入れ替えました。
風呂入って寝ます。
68名無しさん@お腹いっぱい。 : 2001/04/02(月) 21:17 ID:???
つーか、メジャーなディストリビューションにすれば?
出来ない?
69名無しさん@お腹いっぱい。 : 2001/04/03(火) 18:04 ID:???
>68
Vineでパッケージを使ったらすぐに設置できたよ。
70名無しさん@お腹いっぱい。 : 2001/04/05(木) 20:19 ID:???
>>67
FreeBSD + MySQLってどうなの?
Linuxでは非常に安定しているけれど、どっちかというとFreeBSDのほうが好き
なんだよね。誰か情報くださいなー
71名無しさん@お腹いっぱい。 : 2001/04/06(金) 00:03 ID:Dtvd4Fio
問題なかったですよ。
72名無しさん@お腹いっぱい。 : 2001/04/06(金) 16:24 ID:???
Download(15) Web制作(13) perl・CGI(40) PHP(8) 初級ネット(3)
という感じに、トップページに「カテゴリ(登録数)」を数十個リアルタイムで
表示させたいのですが、こういう場合、どのようにするのがよいでしょうか。
$count = mysql_numrows($result);を延々書くのは間違いですよね?
数時間ごとの集計みたいな感じでもよいのですが。
73Error 401 : 2001/04/06(金) 16:33 ID:ukvRmJYk
mysqlのことは良く知らないけど、
create table categories (
category_id integer,
category_name varchar
);
create table category_info (
category_id integer,
topic_num integer
);
みたいなテーブルを作って、
トピック(スレッド)を追加、削除する度にtopic_numを+-して、
それを表示すればよいと思う。

# mysqlの型は知らないので適当です。
7472 : 2001/04/06(金) 18:19 ID:???
ありがとうございます。
一度、そのような感じでやってみます。
75名無しさん@お腹いっぱい。 : 2001/04/10(火) 14:04 ID:tEYZQyMk
itemテーブルなるものがあるとして
select categories.category_name, count(items.itemid) from categories,items where categories.category_id=items.category_id
でしょ
76Error 401 : 2001/04/10(火) 14:34 ID:???
>>75
そのほうが、正統な方法ですね。
>>73 は、高負荷なWebサイトをイメージしたものです。
集約関数を使っても、十分実用に耐えうるなら、75の方法のほうが
良いですね。
7775 : 2001/04/11(水) 12:42 ID:AMO112rE
>>76
なるほど、そこまでお考えの上でのことか。失礼しました。
確かに75ではパフォーマンスがでませんね。
78名無しさん@お腹いっぱい。 : 2001/04/11(水) 13:48 ID:mPUf2Vvk
高負荷なら、毎回SELECTしにいくような設計はダメですよ。
個人のレンタルサーバーだったらいいけど。
DB 触ると、うれしくて、なんでも DBでやりたくなっちゃうけど、
車買ったのがうれしくて、近所のコンビニも車でいくようなもんで、
DBを使わない、本来の小回りの利くやりかたってのを忘れちゃだめです。
79名無しさん@お腹いっぱい。 : 2001/04/12(木) 19:24 ID:8WTozLv2
mysqlのnow()って何?
80名無しさん@お腹いっぱい。 : 2001/04/12(木) 21:36 ID:???
>>78
うっ....。肝に銘じます。
81chba1822.ppp.infoweb.ne.jp : 2001/04/12(木) 22:24 ID:???
TEST
82弱い者の味方、:2001/04/19(木) 18:32 ID:KaxNGoIA
ホームページを作ったものの、まったくアクセスが上がらな
くて悩んでいる人のためにお役に立ちましょう。
効率よく宣伝できる共有宣伝掲示板を18個設置しました。
全部宣伝して回ればなんと1,000以上の掲示板にカキコしたこ
とになり即、効果が期待できます。
しかも共有しているサイトの多い順に並べてますので
上から順に10個ほどの掲示板に宣伝しただけでも
結構な宣伝になりますよ。
さあ、今すぐここからアタック!!

http://home9.highway.ne.jp/cym10262/
83名無しさん@お腹いっぱい。:2001/06/27(水) 04:16 ID:Kn9EPYTU
MySQLでindexのないテーブルにdeleteかけるんだけど、
マッチするレコードがあるのに、そのレコードが削除されない。
もしかして、一意なフィールドがないとdelete効かないの?


---+------+------+--------
A | B | C | D
---+------+------+---------
10 | 100 | abc | NULL
---+------+------+---------

これで、
delete from test where A=10 and B=100 and C='abc'
ってやるんだけど。
84名無しさん@お腹いっぱい。:2001/06/27(水) 04:18 ID:???
c='abc' って使えるの知らなかった…。
85電動ナナシ:2001/06/27(水) 07:16 ID:???
select * from test where A=10 and B=100 and C='abc';
で当該列が選択される?
'abc' が 'abc ' (空白つき) だったりしない?
86名無しさん@お腹いっぱい。:2001/06/27(水) 10:02 ID:???
apache+PHP+MySQL+英辞郎で辞書サーバを作りたいのですが、
どこかに参考になるサイトありませんか。
87名無しさん@お腹いっぱい。:2001/06/27(水) 13:21 ID:pN4jLQ3E
MySQL+PHPで雑誌文献のDB作ってます。入力するときは
2001年1月号、2月号・・・12月号の12個のCheckBoxから登録し、
データは例えば「2001年1月・2001年2月・2001年11月」の様に
一つのフィールドに格納します。
その後修正するときのために、またCheckBoxに効率的に戻す
方法はないでしょうか?
私が考えたのは、if else文を12個きちんと書くことしか思いつかない
のです。
88名無しさん@お腹いっぱい。:2001/06/27(水) 13:47 ID:RdD8UBLs
>>87
「2001年1月・2001年2月・2001年11月」って文字列を、格納してるの?
それは、テーブルの設計がヘンだと思われ。
8987:2001/06/27(水) 14:08 ID:pN4jLQ3E
>変て、12個の内容を一つのフィールドに格納することですか?

そうしないと、12個のフィールドできてしまう。
表示する際は「2001年1月・2001年2月・2001年11月」という
文字列を見たいんですもの・・・。

さらなるアドバイスきぼーん。
90Error401:2001/06/27(水) 14:37 ID:2vjnwCDU
>>89
> そうしないと、12個のフィールドできてしまう。

どうしても一年分を一レコードにしたいなら、一フィールドに全部入れるよりも、
こっちのほうがマシですね。

でも一番いいのは、12レコードに分けること。
9187:2001/06/27(水) 14:56 ID:pN4jLQ3E
>12レコードに分けること。
???
この著者は「2001年1月・2001年2月・2001年11月」号に執筆した
というのをDBに入れているわけで、雑誌がメインではないので、
12レコードに分解するのは意味不明。

月ごとにフィールドを作ってもいいのですが、
(janu/enum('Y','N'), ・・・Dece/enum('Y','N'))
その際は87の方法より大変になりそうと思われ・・・。
92Error401:2001/06/27(水) 16:15 ID:???
ああ、そういうことをやりたいんですね。

僕だったら、

著者コード
掲載雑誌コード
掲載年月

みたいなテーブルにすると思うけど(上の例だと3レコードになる)、それがイヤなら、
一つの列に「2001-01:2001-02:2001-11」とか入れて、自分でパースするとか。

>その際は87の方法より大変になりそうと思われ・・・。

僕はそうは思わないけど、大変だと思うのなら87の方法でやれば?
93名無しさん@お腹いっぱい。:2001/06/29(金) 14:58 ID:???
>>87 素朴な疑問。
12個のチェックボックスって、年をまたぐ連載はどうしてるの?
9487:2001/06/29(金) 17:23 ID:???
>93
1999年は12個
2000年は12個・・・と作ってきたのよん。
毎年一回すごくめんどそうだから、
できるだけうまい方法を考えているのよん。
今までは、ファイルメーカで動かしてきたんだけどね。
95名無しさん@お腹いっぱい。:2001/07/02(月) 11:00 ID:E3hgF41I
>>94
>毎年一回すごくめんどそうだから、
>できるだけうまい方法を考えているのよん。

一生考えてろ(藁
96名無しさん@お腹いっぱい。:2001/07/02(月) 17:28 ID:???
あんたおかしいよ
97名無しさん@お腹いっぱい。:2001/07/02(月) 21:27 ID:???
>>94 手をつける前にRDBの入門書読んで考え方を転換したほうがいいと思われ。
98名無し:2001/07/03(火) 01:10 ID:K4qWcRq.
*雑誌テーブル
雑誌ID(ユニーク)
掲載雑誌コード
*年月テーブル
雑誌ID(リンク?)
掲載年月

例の場合、雑誌1につき、年月テーブルにレコードが3つ出来る。
間違ってる?
99名無しさん@お腹いっぱい。:2001/07/03(火) 16:13 ID:???
アナタハミステラレマシタ。ゴシュウショウサマデス。
10097:2001/07/04(水) 10:37 ID:???
雑誌IDと雑誌コードは同じモノでしょ。

まともにやったら、雑誌、記事、著者、掲載年月がそれぞれ別のテーブルになるんじゃないの?
「ある雑誌に掲載された記事全部」という軸で見るつもりがなければ、雑誌テーブルはなくてもいいけど。
101名無しさん@お腹いっぱい。:2001/07/30(月) 11:23 ID:DpI/j/kI
ブラウザーから「データの追加」のようなボタンを作って、
ファイルを選択し、mysqlimportと組み合わせてタブ(もしくはcsv)
のデータをテーブルに流し込みたいのですが、
ご存じの方いらっしゃいましたら方法を教えてください。
102名無しさん@お腹いっぱい。:2001/07/30(月) 11:26 ID:???
ファイルをアップロードしてインポートする。

ご存知も何も無い。
103名無しさん@お腹いっぱい。:2001/07/30(月) 11:36 ID:DpI/j/kI
>>102
そのPHPのソース見せてくれませんか?
104名無しさん@お腹いっぱい。:2001/07/31(火) 14:51 ID:gbYT3/ic
つまりphpを使ってload dataするにはどの関数を使うのでしょうか?
mysql_queryでいいの?
105名無しさん@お腹いっぱい。:2001/07/31(火) 15:46 ID:???
>>101
msqlimportはよくしらんが、fputを使えば良いだけと思われ
106105:2001/07/31(火) 16:04 ID:???
違った。fgetか。
107101, 104:2001/07/31(火) 16:16 ID:???
>105
fgetとか知りませんが、
104の方法でできた。どうも。
108名無しさん@お腹いっぱい。:2001/07/31(火) 17:33 ID:???
つか考え付く事試して出来んかったら聞けよ。

これだから夏厨は・・・・。
109101,:2001/07/31(火) 17:42 ID:???
>>108
  ∧⊂ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (゚Д゚ )ノ <スマソ
 (| _ |    \__________
〜| l l |
  | l l |
  | l l |
  ∪∪
ただ、一日考えた。
110名無しさん@お腹いっぱい。:2001/08/01(水) 23:20 ID:???
だれか、PS2LinuxでMySQL動かしてる人いませんか?
だれかぁ。
111名無しさん@お腹いっぱい。:2001/08/02(木) 16:08 ID:???
select XXXXXXXX into outfile "/path/filename";
にて、同じ名前のファイルの上書きができないようになってます。
これを解除する方法ありますか?
112111:2001/08/03(金) 13:28 ID:???
書き込む前に削除するようにした。

  ∧⊂ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (゚Д゚ )ノ <スマソ
 (| _ |    \__________
〜| l l |
  | l l |
  | l l |
  ∪∪
ただ、一日考えた。
113名無しさん@お腹いっぱい。:2001/08/22(水) 17:45 ID:???
ローカルのアパッチでテストしてきちんと動いたものを、
サーバで動かそうとしたら、
Warning: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in
のエラーが出ました。
ホスティングサーバでmysqlとphp使うの初めてです。
助けていただけるとありがたいです。
114名無しさん@お腹いっぱい。:2001/08/22(水) 17:46 ID:3EIRhkwc
下げちゃったのであげさせていただきます。
スマソ。
115ななしさん:01/10/16 14:37 ID:Ey/LzZRl
定期age
116名無しさん@お腹いっぱい。:01/10/22 17:26 ID:4SdlYUpT
mod_auth_mysql使って
PHPスクリプトから会員&パスワードを発行して、
apacheで認証ってしてみたいんだけど。

どこかにソースはありませんかのう姉妹?
117名無し職人:01/10/22 23:57 ID:0plXJa9e
WINDOWS用のMySQLのよい
マニュアルってございませんかー?
118名無しさん@お腹いっぱい。:01/10/23 00:23 ID:???
119116:01/10/24 00:03 ID:???

できました。
120 :01/11/05 13:58 ID:vcKAct35
すいません、SQLなんですがどこで聞けばいいのかわからないのでここで聞かせて下さい。
InterBase Interactive SQLってソフト使ってるんですが、

create table test(FLAG numeric(1),PNAME varchar(20),UPDTDT datetime,BIKO varchar(20),SYOYUSYA varchar(20));

これでエラーが出てしまうんですが、何故でしょうか。

Dynamic SQL Error
-SQL error code = -607
-Invalid command
-Specified domain or source column does not exist
121120:01/11/05 14:12 ID:vcKAct35
たぶん、datetimeの部分が問題あると思うんですが、
日付型にしたくて
20010925 10:35:21
みたいな感じにしたいんですが。。。
122名無しさん@お腹いっぱい。:01/11/06 21:35 ID:b75oj9Rb
PHP4.0.4なんですが文字コードをEUCからShift-JISに変換する
関数ってありましたっけ。
123名無しさん@お腹いっぱい。:01/11/07 00:39 ID:???
PHPでブラウザからMySQLのデータをバックアップしようと

ボタン押す
 
if(!$backup = mysql_query("select * from テーブル名 into outfile '/usr/local/xxx/xxx/xxxx.txt'") ) {
  echo "えらー";
  exit;
 }

完了
で、クリックしてダウンロード

という事を試していますが、ローカル(Win)ではうまくいっても
実際のサーバーではエラーが出ます。
コマンドを打てば、サーバーでもうまくいきます。

nobodyでは無理なのでしょうか?
cron 使ってできるのならそっちの方がよいですけど、cronも
使ったことなくて。
124名無しさん:01/11/15 23:40 ID:???
MySQLが、ろ
125名無しさん@お腹いっぱい。:01/11/16 00:13 ID:???
>>123
nobody は /usr/local/xxx/xxx に書けるんか?
126名無しさん@お腹いっぱい。:01/11/16 14:53 ID:???
>>123
ちなみに、MySQLのselect * into outfile 'FILE'は FILEが存在すると失敗する。
127名無しさん@お腹いっぱい。:01/11/19 03:35 ID:???
>>122
mb_convert_encoding (string, "SJIS", "EUC");
てな感じでいいのでは?
[, "EUC"] は省略可。
>>127
2バイトコードの変換は4.06からじゃなかったけ?
129122:01/11/22 09:46 ID:???
>127さんありがとうございます。
>128さんのおっしゃるとおりですので、

ttp://www.spencernetwork.org/

で解決させました。
130名無しさん@お腹いっぱい。:01/11/29 04:34 ID:lzlfsEO3
凄く初歩的な質問で恥ずかしいのですが、MySQLのテーブルをロックする場合
select時も必要なのでしょうか?
CriticalSectionと同じ使い方でいいのかな、と。
131名無しさん@お腹いっぱい。:02/01/25 21:08 ID:EnQhZp93
ずっとマニュアル見ながら考えてるんだけどよく分からない。
MySQLでLOCK TABLE使わないと、ファイルを直接書き換える時みたいに、
データベース自体が壊れてしまう、つまり空になってしまう事ってあるの?
132名無しさん@お腹いっぱい。:02/01/25 22:15 ID:YPhuvDQP
>>131
あったら困るが・・・。
133名無しさん@お腹いっぱい。:02/01/27 01:37 ID:cosj42ZD
同じレコードのデータを同時にupdateするケースがある場合以外に
lockする必要は無いだろうに・・・。
WEB+DBマガジンでもよんどけ。
134131:02/01/27 08:03 ID:0uaA5Fv8
135名無しさん@お腹いっぱい。:02/02/10 05:00 ID:/GsQSjbc
画像のDB作ってんだけどLONGBLOBのフィールドに
どうしても16MBytes以上のデータを挿入できないんだよ。
my.cnfにmax_allowed_packet=64M
とか設定することで、一応16MBまではOKみたいなんだけど、
だれかこの謎について知らない?
136名無しさん@お腹いっぱい。:02/02/13 13:12 ID:41nJDth8
>>135
エンコードされた文字列のまま格納しようとしてるとか?
137名無しさん@お腹いっぱい。:02/02/13 17:35 ID:???
mysql_query() って、一度にひとつのSQL文しか実行できないの?
サブクエリの代わりにMySQL変数を使ってみようと思って、

$res = mysql_query(
  "select @nextid:=coalesce(max(i),0)+1 from t1;
   insert into t1 values(@nextid,'hogehoge');",
  $con
);

ってやってみたら、

You have an error in your SQL syntax near '; insert into t1 values(@nextid,'hogehoge')' at line 1

というエラーになってしまった。
mysqlコマンドからはできたんだけど、これはコマンドか分けて送信してるのかな。
138  :02/02/14 07:18 ID:???
mysqlって、つかったことないから、わかんない
postgresじゃ、だめなの?
139 :02/02/15 12:53 ID:???
sage
140137:02/02/16 00:36 ID:???
>>139
だって Vacuuuum とかめんどくさいんだもの。
一度立てたら最低限のバックアップくらいであとはほっときたいじゃん。
141名無しさん@お腹いっぱい。:02/02/20 02:52 ID:???
PHP+MySQLのオークションシステム配布してるとこ
知りませんか?
以前、外国で見たことあるのですが、どこだったか
忘れてしまいました。
日本語版があると、更に良いのですが。
142名無しさん@お腹いっぱい。:02/02/20 15:56 ID:???
>>140
スレ違いだけどスマソ。
PostgreSQL7.2は、「5秒毎にVacuumかけてもOKだぜ!」と豪語してる。
Vacuumが不要なわけではないけど、機能停止せずにVacuum可能になったらしい。
143nobodyさん:02/03/02 17:35 ID:GfXDGnRV
調べても分からなかったので質問させてください。Win98 + MySQL + PHP で、

$query ="insert into person(id,name,reading,like,hate,want,intro) values('2002030207145036','名無し','ななし','肉','椎茸','X-BOX','小学3年生です')";
mysql_query($query);

とやると成功するんですが、

$query ="insert into person(id,name,reading,like,hate,want,intro) values($form[0],$form[1],$form[2],$form[3],$form[4],$form[5],$form[6])";
mysql_query($query);

こうすると失敗してしまいます。きちんと値が渡っていないようなんですが、
これの原因、解決策はありますでしょうか?
144nobodyさん:02/03/02 18:14 ID:???
1行目と2行目の間に
echo $query;

2行目の後に
echo "<br>" . mysql_error();

と書き足して実行してみよう
145nobodyさん:02/03/02 19:17 ID:???
$form[]をSQL文の中で'で囲ってないだけじゃなくて?
146143:02/03/02 20:28 ID:N9v4UEdy

>>145 さんの言われた通り、クォーテーションで囲んだら
正常に実行できるようになりました。クォーテーションで
囲まれた中にある変数は参照されないとばかり思っていたのが
そもそも間違いの元でした。

ありがとうございました。
147nobodyさん:02/03/03 20:52 ID:69e0GrH8
Windows版MySQL ver 1.2 で、ひらがなのソートが上手く行きません。
Win版では日本語は対応していないのですか?
148nobodyさん:02/03/05 12:59 ID:???
>>147
「上手く行きません」の詳しい内容を書きましょう。
149nobodyさん:02/03/05 14:04 ID:???
>>148
"つ" の上に "ゆ" が来てたりして、きちんとソートされないんです
150nobodyさん:02/03/05 18:16 ID:bIkjFbNp
ボタンを押すと時間を記録スルスクリプトなんですが
時間表示が妙な数字の並びになってしまうのですが
普通の2002/9/3 12:34のようなスクリプトに書き直すのにはどうすればいいでしょうか?
DB使わずにechoで返せばそうなるのですが・・
<FORM action="time.php"><INPUT type="submit" name="get"></FORM>
<HR>
<?php
$db=mysql_connect("localhost","nanasi",*******);
mysql_select_db(time);
$time=date("Y/m/d h:i:s");
if($get)
{
mysql_query("insert into time set time='$time'");
}
$sq=mysql_query("select * from time");
while($array=mysql_fetch_array($sq))
{
$datatime=$array["time"];
print("$datatime");
}
mysql_close($db);
?>
151nobodyさん:02/03/05 23:11 ID:???
>150
時間を格納するフィールドの型はどうなってんだ?
152nobodyさん:02/03/06 01:25 ID:???
INSERT INTO tabe1 (time1) values ( NOW() );
153nobodyさん:02/03/06 10:56 ID:RiDVorzN
ごめんなさい出来ました
timestampをdatetimeに変えた
$db=mysql_connect("localhost","nanasi",*******);
mysql_select_db(time);
$time=date("Y/m/d h:i:s");
if($get)
{
mysql_query("insert into time values('$time')");
}
$sql=mysql_query("select * from time");
while($array=mysql_fetch_array($sql))
{
print("$array[time]<BR>");
}
154nobodyさん:02/03/06 12:51 ID:b7FmzTqP
>>149

MySQLが日本語サポートしてないなら、
ソート用のフィールド1個つくって
そこに
アホ→1165
あいうえお→1112131415
とか適当な変換した数値入れて、
そいつでORDER BYかければいいんじゃない?
155152:02/03/07 11:26 ID:???
>>153
だからMySQLの関数NOW()を使えばPHPのコードで時刻取得しなくていいって。
156nobodyさん:02/03/07 11:34 ID:???
157nobodyさん:02/03/07 11:43 ID:???
158147:02/03/07 12:25 ID:???
ご意見有り難うございます。
確かにローカル環境ではそのような対策によって問題を解決することが
できるのですが、サーバ側(XREA) の設定はデフォルトになっていまして、
変更がきかない状態です。>>154 さんの方法も視野に入れて、
検討しなおしてみます。
159nobodyさん:02/03/07 13:03 ID:2htMbj9y
鯖がボロイせいなのかもしれませんが、
SELECT * FROM table
で10秒くらい待たされます。
件数は1000件ほどなのですが、MySQLが速いといってもこんなもんなのですか?
鯖はPen3 500MHz Mem128K Win98です。
160nobodyさん:02/03/07 14:41 ID:ViFldAhD
$db=mysql_connect("localhost","@@@@@@",*******);
mysql_select_db(bbs);
if($name&&$msg)
{
mysql_query("insert into time values(now(),'$name','$msg')");
}
$hoge="select * from bbs";
$hoge="select bbs from bbs order by time desc";
$sql=mysql_query($hoge);
while($array=mysql_fetch_array($sql))
{
print("$array[name]<BR>");
print("$array[msg]<BR>");
print("$array[time]<BR>");
}
?>
</BODY>
</HTML>
なぜfetch_arrayが動かないのでしょうか、、(;;)?ミスを指摘してもらえま
ませんか?
161nobodyさん:02/03/07 15:32 ID:???
$hoge="select * from bbs";
$hoge="select bbs from bbs order by time desc";

どうでも良いけど、書き直す意味は?
162nobodyさん:02/03/07 16:17 ID:ViFldAhD
>>161
並び替えの理由でしょうか(´д`;)?
簡易bbs作りたいんです
163nobodyさん:02/03/07 17:39 ID:2htMbj9y
同じ変数に何度も入れなおすのはいかがなものか。
164nobodyさん:02/03/07 18:51 ID:???
>>160
エラー処理は必ず入れよう。

if (!mysql_query("insert into time values(now(),'$name','$msg')")) {
echo mysql_error();
exit;
}

あとtimeとか一般的過ぎる名前はSQLの予約語になっていないか疑ってみよう。
漏れは怖いのでtime1とかつけて逃げる。
165nobodyさん:02/03/07 19:09 ID:???
>>164
ありがとう(^д^)!,俺もtime1使う事にするは!
ども!
166nobodyさん:02/03/12 00:36 ID:???
最近 LEFT OUTER JOIN を知って感動したけど、他に何かすごい技ってないかな?

ちょっと弱気にsage。
167nobodyさん:02/03/12 04:09 ID:???

SQLに代入したテキストを取得して表示させると
"表\示"のようになってしまいます。これを防ぐには
どうしたら良いでしょうか
168nobodyさん:02/03/12 11:12 ID:FQ2EPisb
>>162
>>161>>163 ってことだろう
169nobodyさん:02/03/12 12:28 ID:???
>>167
Shift-JISをやめる
170nobodyさん:02/03/12 16:46 ID:???
>>169
諦めてEUCにしました
171nobodyさん:02/03/23 01:59 ID:+fv2A8Nb
今まで Apache + PHP + PostgreSQL on Linux で
開発してきたのですが、IIS + PHP + MySQL on WinNT での
開発依頼がきてしまいました。

MySQL 関連でお薦めの参考文献はありますか?
172957:02/03/29 17:47 ID:nw+WUuT4
PHPでMySQLのデータをXMLに変換してる方います?
173nobodyさん:02/03/30 11:37 ID:M/C/V7hb
他のスレでも質問したのですが、こっちのほうがよさそうなので…
MySQLに格納されている画像の大きさを取得したいのですが
どうやったらいいでしょう?
GetImageSize($sql_dat[image])ではできませんでした。
SQLから取り出した画像を一回フォルダに書き込んでサイズ取得
その後フォルダの画像を消すみたいなのはかなり強引なやり方ですが…。
他に何か方法ありませんか?
174nobodyさん:02/03/30 17:16 ID:xPohoijV
MySQLのフィールドサイズを教えてください。
知りたい型は
DATE型
TINYTEXT型
TEXT型
MEDIUMTEXT型
LONGTEXT型
です。
よろしくお願いします。
175nobodyさん:02/03/30 22:39 ID:???
>>174

DATE型 → たしかマニュアルに書いてたような・・・
TINYTEXT型 → たしかマニュアルに書いてたような・・・
TEXT型 → たしかマニュアルに書いてたような・・・
MEDIUMTEXT型 → たしかマニュアルに書いてたような・・・
LONGTEXT型 → たしかマニュアルに書いてたような・・・
176:02/03/31 16:03 ID:aL9WnZNZ
.6.2 日付と時間タイプの保存容量
フィールドタイプ 所要容量
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte

6.2.6.3 文字列タイプの保存容量
フィールドタイプ 所要容量
CHAR(M) M bytes, 1 <= M <= 255
VARCHAR(M) L+1 bytes, where L <= M and 1 <= M <= 255
TINYBLOB, TINYTEXT L+1 bytes,where L < 2^8
BLOB, TEXT L+2 bytes,where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L+3 bytes,where L < 2^24
LONGBLOB, LONGTEXT L+4 bytes,where L < 2^32
ENUM('value1','value2',...) 1 or 2 bytes, 列挙値の数に依存 (最大値は 65535 )
SET('value1','value2',...) 1, 2, 3, 4 or 8 bytes, 要素の数に依存 (最大要素 64 )
177:02/03/31 16:07 ID:aL9WnZNZ
ちょい質問。
MySQLのTEXTフィールドに、改行コードが入った文字列を入れました。
これをPHPでゲットして表示すると改行はされずに一行で表示されます。
改行は、<BR>に変換して表示しないとダメなんですか?
もしそうならどうやって変換しているのですか?
178nobodyさん:02/03/31 18:41 ID:34FKVasX
179nobodyさん:02/04/01 09:04 ID:ePtKp0Pt
>>177

TXETを$messageに入れたとして
$message = ereg_replace("\n|\r\n|\r", "<br>",$message);

わたしは改行コードを<br>に一度変換して、MySqlに入れてます。
MySqlから取り出すときは逆をやると・・・。
180nobodyさん:02/04/02 01:53 ID:1F1eJ6FA
Mysql関連の質問ですが、1テーブルあたりの最大カラム数がどれくらいかどなたかご存知でしょうか?
(現在結構大きなシステムを作ってるのでカラム数が1000ぐらい逝きそうなのです。)
また、1テーブルあたりのデーター数は特に制限はないのでしょうか?
よろしくお願いします。
181nobodyさん:02/04/02 15:10 ID:9yw1c0Ia
> 180
カラム数ではなくバイト数の制限というのをどこかで見た記憶が。。。
うろ覚えでスマソ
182nobodyさん:02/04/02 21:04 ID:1F1eJ6FA
>>181
どうもありがとうございます。
バイト数の制限ってテーブルの大きさに限界があるってことでしょうか。
てことはあんまり容量の大きくなったテーブルはデーターの書きこみが出来ないってことですね。
やっぱりpostgreSQLを使ったほうが良かったかなあ・・・
速いってことに惹かれたのですが。
183181:02/04/02 23:07 ID:8qPk2oUk
>> 182
やっぱうろ覚えのようでした。
http://www.kbcenter.com/kb.php?u_action=view_kb&kb_id=2407&category_id=71
Q. What is the maximum number of columns in a table?
A. The answer is: at least 2000 columns
184nobodyさん:02/04/03 14:33 ID:JehAsWDR
>>183
どうもありがとうございます。
PostgreSQLはカラム制限が確か500〜1600だったと思うのでカラム数の上限に関してはMySQLのほうが上ですね。
同サイトで検索をかけたらデータサイズのリミットについても載ってました。

Q. maximum table size?

A.
The maximum table size is limited by the MySQL version, the OS and in particular the filesystem. In most cases, this effectively comes out to: "The size of your hard drive." Many Linux systems impose a 2GB limit on files.

MySQL v. 3.23 in particular, can be compiled to enable large tables which are only limited by the filesystem (unless, of course, your drive is larger than 800 million terabytes.)

つまりMySQLのV.3.23ならファイルシステム以外に特に制限がないとなってますね。
やっぱりMySQL(・∀・)イイ!
少しの間でも疑ってスマヌ。
185nobodyさん:02/04/08 00:35 ID:ThlnEI/e
すいません、質問です。
非常に小規模なPHPとMySQLをつかった(on Win98)Web業務アプリを
社内SE(といっても無理やり任命...鬱)として開発しているのですが、しょっぱ
なから躓いてしまいました。

PHP(のスクリプト)からMySQLへ接続しようとすると、「sjis.confがない!用意しろ」
という意味のエラーメッセージが表示されてしまいます。
Webで調べて、非公認のsjis.confとか、日本MySQL会の過去MLにあったujis.conf
などを取り寄せたりしましたが、結局は[sjis.confなるものは存在しない」「再コン
パイルが必要」という結論のようです。
 現状は問題無く(非公認sjis.confのおかげで)稼動していますが、本線から外れた
気がして、気になってしかたがありません。

 この様な問題を体験した方、どのように問題をクリアしたか教えてくれませんか?
宜しくお願いします。

186nobodyさん:02/04/08 01:14 ID:9VtFCTbU
>> 185
PHPのバージョン、MySQLのバージョン等、環境が知りたいなぁ。
187nobodyさん:02/04/08 17:41 ID:k1pVA1I5
>> 186
便乗質問ですが、Windows、PHP4.1.x、MySQL3.23.xの環境で、PHPとMySQLをトータルで
考えた場合、日本語の環境はどのようなものが良いでしょうか?
PHPの内部エンコードなども含めて。

PHPのコードもデータベースに保存するテキストもEUCにしていますが、
DOS窓で日本語が表示できないなど、不便を感じています。

また、書籍「MySQL&PHP(田中ナルミ著)」のP334には、「MySQLサーバーを
SJISやEUCで立ち上げると、PHPを通じたMySQLの操作がうまくいかないこと
があります(PHP4の日本語対応が不完全なため)。」
その対策方法も書かれていますが、どれが良いのか迷います。
188nobodyさん:02/04/08 21:44 ID:???
UTF-8
189nobodyさん:02/04/08 23:00 ID:9VtFCTbU
個人的にはEUC-JPで統一かなぁ、と思います。
SJISを使わざるをえない場合(携帯用とか)なら
PHP3でやっちゃいそうです。
DOS窓で日本語…ってMySQLの操作のことですかね?
phpmyadminとかじゃダメですか?

ただ、このあたりは少々宗教戦争っぽいんですよね。
文字コードに関する論争なんかは、例えば
[PHP-users 4681] sjis で  echo ”能” エラー
ここから始まるスレッドあたりでしょうか。
190nobodyさん:02/04/09 00:00 ID:CyKKzVcs
>> 189
>
> DOS窓で日本語…ってMySQLの操作のことですかね?

そうDOS。。。

> phpmyadminとかじゃダメですか?

それいいですね。THANKS!
191185:02/04/09 23:22 ID:???
>>186
遅レスすいません。環境は、以下の通りです。
OS:win98
サーバー:AN httpd(中田氏のもの。将来的にはApacheに。。。)
PHP : ver. 4.1.1
MySQL : ver.3.23.46
PHPスクリプト埋め込んだHTML(.php)の文字コード:x-sjis(SJIS)

なんか答えが半分出てしまったようなのですが、やはり問題として
議論の対象となっていたのですね。
UNIX系OSでコンパイルするような環境が当方にあれば良いのですが、UNIXに
関するshellなどの知識の習得や、運用など一から勉強しなくては逝けない
ことばかりで、当方にはまったくそのような時間はありません。
PHPの前はActivePerl(=perl)で、接続に関してはあまり問題無かったので
なおさらショックです。

 PHPに結構強い期待を寄せていたのですが、やっぱりperlに戻らなくては
逝けないのかなー?そう考えると鬱です。。。

192186:02/04/10 00:12 ID:???
>>191
私はWindows2000 + Apache 1.3.24 + PHP 4.1.2 + MySQL 3.23.39 ...
でユーザー20人くらいのものを作っていますが、別に問題感じていませんが…
運がいい(ダメ文字が今まで入っていない)だけなのかな?
ちなみに189で言いましたが文字コードは全部EUC-JPで統一です。

一つ気になるのですが、Perlでは接続は問題ないとはいえ
http://homepage1.nifty.com/yito/anhttpd/faq/mysql.html
で言われているように、、「ソ」「構」「能」「表」など 5C のコードを含む文字
が文字化けを起こしてしまうんではないですか?
これってMySQLの問題であって、PHPだろうとPerlだろうと
出てきてしまうのでは?

HTMLをSJISで書くのを避けられないなら、
mbstringで変換してDBにはEUCで放り込むとか。
(うまくいくか自信なし…というか上の文章全部自信は無くて、
あくまでも自分の経験だけなので間違っていたらごめんなさい)
193nobodyさん:02/04/10 00:15 ID:???
で、
マルチバイト文字列関数(mbstring)のマニュアルは
http://jp2.php.net/manual/ja/ref.mbstring.php
このあたりで…。

4.1.0以降ならWindows版のPHPもmbstringは
組み込まれていると思います。

あと、PHP 4のRFC1867(ファイルアップロード関連)に関するコードに
セキュリティ上の欠陥があり、任意のコードを実行される可能性が
あるので、最新のPHP 4.1.2にバージョンアップするか、修正用パッチを
適用するか、php.iniを書き換えておいてくださいね。
(外部からアクセスできる場合)
194185->191:02/04/10 00:52 ID:???
>>192,193
有難うございます。
悪名高い「能」「表」文字をつかってぐりぐり動かしているのであれば
単に文字コードの問題で、それへの対処はperlで(初心者の頃より)さんざん
苦労したので想像がつくんですが、私の日頃の行いが悪いのか、接続時点で
つまり。。。
<?
$db = mysql_connect("localhost","hogeuser","password");
....
....
?>
とやって、実際にこの記述がされたページを読みこむと、この記述した箇
所に「sjis.confを用意しろ、ゴルア」みたいな内容のエラーメッセージ(
といっても処理が中断されるわけではない)がでて、当方でsjis.confを
手に入れるまでは、接続するたびにこのメッセージがでて困っていたのです。
 該当スクリプトを埋め込んだ.phpファイルの中にはHTML部分に当然日本語の
データを使っている箇所もありますが、localhostや接続ユーザー名やパスワ
ードには日本語を使うという厨房的非常識なことはしていませんし、この単に
データベースへ接続すると言うことに関しては、perlでのトラブルの体験が記
憶に無かった、と言うことだったのです。

 でもやっぱり、漢字コードについて分かっていないのかもしれませんね。
開発環境をEUC_JPに統一する方法をなんとか考えるか、mbstring()を勉強
してみます。

 ありがとうございました。

 (セキュリティ対応のご指摘も有難うございます >193)
195nobodyさん:02/04/13 17:13 ID:KuNi6hxm
日付のチェックって
checkdate以外にないの?

'2002/04/13'ってデータを
checkdateでチェックするにはどうすればよいの?
196nobodyさん:02/04/13 18:20 ID:KuNi6hxm
VBのIsDateみたいなやつがあったらうれしいなぁ。

checkdateだと、年、月、日に分割しないとダメなのが嫌なんですよね。
197nobodyさん:02/04/14 15:55 ID:o4dlBvyu
PCから接続しているのか携帯から接続しているかを
PHPで判断するにはどうすればよいのん?
198nobodyさん:02/04/14 19:02 ID:???
>>197
ホストで判断すればいいのでは?
199nobodyさん:02/04/14 19:41 ID:???
PHPって最近のSQLで利用する日本語文字コードを固定できたような
200nobodyさん:02/04/14 21:04 ID:6DHe9XM+
>>198
ホストで判断ってどうやってやるのん?
201nobodyさん:02/04/14 22:45 ID:4+43mXog
202nobodyさん:02/04/15 14:55 ID:85MlnFuN
現在、>>153さんのように時間をmySQLに記録するスクリプトを書いています。
使用しているデータタイプは、timestampです。
$time=date("Y/m/d H:i:s");
で、上のようにゲットした時間をデータベースに記録して、
後でクエリーして取り出した時間を例えば「April 13, 2002」のように表示するにはどうしたらよいでしょうか?
「4/13/2002」でもかまわないのですが。
203202:02/04/15 15:31 ID:85MlnFuN
続きですが、データベースの中には
「20020412123456」という形で入っているわけです(これは2002年4月12日12時34分56秒を表します)
これをどうしたら、「April 12, 2002」とか「4/12/2002」で表示できるんでしょうか
204nobodyさん:02/04/15 16:26 ID:qOdJXznR
>>202-203
http://jp2.php.net/manual/ja/ref.datetime.php
このあたりじゃダメですか?
205202:02/04/15 17:33 ID:85MlnFuN
>>204
どうもです。まだ試していませんが、select文でDATE_FORMAT関数を使えばできそうです。
こんな感じで。select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');

http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_toc.html#Date_and_time_functions
206204:02/04/15 23:52 ID:???
>>205
おお。どうもどうも。非常に参考になりました。
207196:02/04/16 00:11 ID:MlXylYBc
checkdate以外に時間チェックはないの?
208すえぐぜく?:02/04/18 18:13 ID:QEUbZy/J
Apache + mod_php
209すえぐぜく?:02/04/18 18:18 ID:QEUbZy/J
>208
すみません、書き終わる前に投稿してしまいました。
Apache + php4_module + MySQL をつかってます。
データベースに接続するときにパスワードが必要になりますが、
このパスワードを PHP スクリプト中に埋め込もうとおもっています。
(設定項目を集めたスクリプトを用意して)。

当然このスクリプトファイル、たとえば config.php のパーミッションは
600 になるわけですが、PHP はApache と同じユーザ (www) で
実行されるのでメインプログラム index.php から config.php を
読み出すことができません。

suExec 経由の CGI なら実行されるときのユーザは自分自身なので
問題ないのですが。

PHP に限ったことではありませんが、CGI ではなくてモジュールで
スクリプトを実行するときは、みなさんどうやって切り抜けてらっしゃるのでしょうか?
210すえぐぜく?:02/04/18 18:22 ID:QEUbZy/J
過去スレの↓みたいなことで困ってるんですが、
どうやって何とかするんだろう、と。

447 名前: ◆wfMSpsRY 投稿日:2001/12/22(土) 15:31 ID:???
suexecみたく、ユーザ権限で動いてくれないと、
レンサバには導入し辛い。
php.iniとスクリプト作り手の工夫次第でsuexec対応
しなくても何とかなるけどね
211 ◆wfMSpsRY :02/04/18 22:25 ID:???
>>210

http://ebi.2ch.net/php/kako/982/982687820.html
188〜261辺りを読みませう。
今更だけど、PHPがsuexecに対応しなくてもって意味ね。

さて、私は188〜261ドレでしょうw
212すえぐぜく?:02/04/19 09:28 ID:3KXoKyNv
safe_mode = on
safe_mode_exec_dir = "."
open_basedir , doc_root を適切に設定。

ということで対処するんですね。
んがしかし、結局 PHP がアクセスできるファイル
および PHP スクリプト自信は user = nobody ( or www)
がアクセスできるわけですよね?

とすれば、結局 ssh とかで普通にログインしてきたユーザには
それらのふぁいるを読まれてしまうと思うのですが…

やっぱその場合は CGI モードで動かさないとダメなのかな?
213すえぐぜく?:02/04/19 09:31 ID:3KXoKyNv
http://ebi.2ch.net/php/kako/982/982687820.html の >207 より引用

> あ、でもPHPだけならいいですが、Perl等、他のCGI実行環境も
>提供している場合は、PHPだけで対応してもダメですね。

> PHP自身の機能として、スクリプトの所有者の権限で動くモード
>(sbitをみる)があってもいいと思うのですが、これは問題があるの
>でしょうか。

これは確かにそう思いますね。 Apache が root で動いてなくても
suExec できてるんだから、モジュールでもできると思うんですが…
うーん、悩ましい問題です。
214すえぐぜく?:02/04/19 09:49 ID:3KXoKyNv
ここで気づきました。
当初は MySQL にアクセスするためのパスワードをスクリプトに埋め込んで
そのスクリプトを他の人に読まれたくない、という動機からここに書いたんですが、
もはや MySQL の話題から離れてしまったので別スレに逝きます。
でわ、失礼しました!

【PHP】質問スレッドPart3
http://pc.2ch.net/test/read.cgi/php/1013919792/
215すえぐぜく?:02/04/19 09:54 ID:3KXoKyNv
PHP + MySQL
http://pc.2ch.net/test/read.cgi/php/983250751/209-213
から飛んできました。

Apache + mod_php を使っています。
データベースにアクセスするパスワードなんかをスクリプトに埋め込んで、
そのスクリプトを他のユーザに詠まれないようにしたい、ということです。

CGI なら suExec で user=www ( or nobody) => user=ore に
権限を変更できるので、パーミッション 600 で OK なんですが、
モジュールの場合は user = www ( or nobody) のままなので
600 にはできないです。

結局

safe_mode = on
safe_mode_exec_dir = "."
open_basedir , doc_root を適切に設定。

を適切に設定することで何とかなりそうかな、ということだったんですが、
それでもパスワードを含むスクリプトを 600 にはできないですよね?
となると、ssh とかでログインして作業している他のユーザには
読まれてしまうわけで……

まだあんまりやったことないですが PHP を CGI として動かそうかな、とか。
216すえぐぜく?:02/04/19 09:55 ID:???
>215
ごめん、つづけてこっちに書いちゃった…
鬱だ…
217nobodyさん:02/04/20 21:10 ID:???
しかし MySQL のドキュメントは糞

構成めちゃくちゃ
内容貧弱

動作は速くていいんだけどね・・・
218nobodyさん:02/06/01 09:47 ID:akzfNCGw
Windows98+MySQL+windclients-3_22_28_euc+CSEの環境です。
「MySQL&PHPでつくろう!Webデータベース構築ガイド」を参考にMySQLの文字コード
をujis(EUC)に設定すると、日本語の文字数も正しくカウントできますね。
なぜかその設定をすると、DOS窓からMySQLもMySQLAdminも起動しなくなってしまいます。
これは解決できるでしょうか?
219phpBB2:02/06/01 22:09 ID:bHoxoQKA
220phpBB2:02/06/01 22:14 ID:bHoxoQKA
221Power:02/06/11 19:21 ID:xg55fsn9
MySQLはOracleの順序にあたるものって
あるのですか?
ない場合、どのようにして連番を取得するのですか?
222nobodyさん:02/06/12 02:21 ID:ByyI73Vk
>>221
Oracle知らないんだけど、順序って
insertした順番に付くレコードの番号の事?

それだったら、フィールドの型を
int auto_increment primary key
にすればよい
223Power:02/06/12 20:15 ID:RK99k1q3
>>222
Oracleの順序とはおっしゃる通り連番を返すものです。

私がやりたい事は、変数に連番を入れる事です。

SELECT 順序名.NEXTVAL
INTO :変数名
FROM DUAL;

Oracleではこのようにすれば変数に連番をセット出来ます。
で、この変数を使い色々処理を行いたいのです。

MySQLでは型に自動に連番を振ってくれるものがあると聞いています。
この場合、変数に連番をセットする事は可能でしょうか?
224nobodyさん:02/06/12 20:28 ID:???
答えは既に出ている。
225nobodyさん:02/06/25 00:08 ID:clASTtZb
MySQLにWORD,EXCELデータをアップロードしてPHPでダウソできるようにしたいのですが、
データの型はBINARYでよろしいのでしょうか?
Permission deniedが出てきてしまうのですが???
226nobodyさん:02/06/25 00:53 ID:???
227nobodyさん:02/06/26 22:43 ID:RPzx9bH+
228nobodyさん:02/07/05 13:19 ID:sTJoXJtl
分散データベースの研究をしております。
同じテーブル定義のテーブルを分散しているのですが、
その分散したテーブルを一つのテーブルにしたいのですが、
なにか方法はありませんか?
229nobodyさん:02/07/05 22:12 ID:???
230nobodyさん:02/07/06 00:39 ID:Dg/qr5jp
>>229
教えてあげて
231 :02/07/06 02:02 ID:???
↑228ハケーン
232nobodyさん:02/07/06 05:33 ID:???
いちいちマルチかどうかそこらじゅう嗅ぎまわってんの?この人たち。
ボランティアの方?
233nobodyさん:02/07/06 06:07 ID:???
>>232
嗅ぎ回らなくても目に付く。
あんたがマルチするようなスレの住人はかぶってるんだよ。
234nobodyさん:02/07/06 14:31 ID:???
なんでもかんでも自分の敵を同一人物にしようとするのは馬鹿の証
235nobodyさん:02/07/23 03:19 ID:cyKC/Zg5
質問
http://allabout.co.jp/computer/database/closeup/CU20020307/index.htm?FM=glcct
にある
SQL> select job,count(job) from emp group by job order by count(job) desc;

ってのはMysqlでは駄目ですか?
調べると
SQL> select job,count(job) as count-job from emp group by job order by count-job desc;
て書かなきゃ駄目っぽいんですけど?
236nobodyさん:02/07/23 13:56 ID:???
>>235
count(job)ってのはフィールドじゃないからダメ。
count(job) as count-jobは明示的なフィールド名を持たせていて
その結果をsortする指定だからOK。

MySQLに限らず基本事項だろ。
237nobodyさん:02/07/23 19:39 ID:et0aznNL

【ウェブサーバーに影響を及ぼす『PHP』の欠陥】
http://japan.cnet.com/Enterprise/News/2002/Item/020723-4.html?me

238nobodyさん:02/07/23 22:15 ID:/btI2V00
初歩的な質問で恐縮なのですがご教授下さい。
手動で番号を振っている列の最大値を取得したいだけなのですが、本を参考にこう書きました。
$result=mysql_query("SELECT * FROM hogehoge order by number desc limit 1");
$rows=mysql_num_rows($result);
if($rows==0){}else{while($row=mysql_fetch_array($result)){echo $row["number"];}}

これで目的は果たせてるのですが、もうちょっと簡単な書き方…というか方法ないでしょうか?
239235:02/07/23 23:41 ID:???
>>236
ていうことは上の書き方は
MySQLでなくともダメってことなんですか…

なかなかムツカシ

240nobodyさん:02/07/24 02:54 ID:???
>>238
$result=mysql_query("SELECT * FROM hogehoge max(number)");
$rows=mysql_num_rows($result);
でnumberが一番大きなレコードだけが取り出せる
241240:02/07/24 02:59 ID:???
ごめん・・・うそ教えた
$result=mysql_query("SELECT max(number) as maxnum FROM hogehoge");
$rows=mysql_num_rows($result);
$row=mysql_fetch_array($result);
で、
$row["agemax"]に最大値が入ってる
242241:02/07/24 03:02 ID:???
また嘘だ・・・
$row["agemax"]→$row["maxnum"]ね

自分のスクリプトからコピペってそのまんまだった
逝ってきます
243238:02/07/24 17:23 ID:???
>>240-242
ありがとうございます。
$result=mysql_query("SELECT max(number) as maxnum FROM hogehoge");
$row=mysql_fetch_array($result);
echo $row["maxnum"];
で出来ました。かなりすっきりして嬉しい限りです。
本当にありがとうございます。
244ロリ:02/07/24 22:29 ID:o7AisP6C
裏ロリビデオを手に入れたいならまずはここ・・・です
欲しいけどルートが分からない初心者にもやさしく
 “とにかく安く、そして確実に”
少女の道草、マニア撮りロリータ・・・etc.
サンプルはタダでした。良かったらみてください。一日しのぎのネタには
なると思います。今ならおまけもレアなあります。数に限りがあるんでお早めに。。
http://up.to/muke
245初期不良:02/07/26 06:13 ID:???
>>235
count(hoge) は指定がなければ count(hoge) as count になる。
一回 order 無しで出力させてみればわかる話だろ。
よってこれで逝ってよし。他の DB でも同じ。
select job,count(job) from emp group by job order by count desc;
246nobodyさん:02/07/27 20:43 ID:???
SQL 文中にユーザからの入力データが入ってくるのですが、
入力データのチェックはどのようなことをすれば大丈夫なのでしょうか?
247nobodyさん:02/07/29 21:36 ID:DzCwMCFn
すいません、Nt上でJet(Access mdb形式)+ASPで組んでいたWeb+DBを
Linux+PHP+MySQLに移行しようと思っています。mdb形式のテーブル
からデータをMySQLに移すにはどうやったらいいのでしょうか?
248nobodyさん:02/07/30 18:47 ID:???
>>246
ふつ〜は addslashes () と ereg_replace () との組み合わせで OK のはず。
$user_name = addslashes ($_POST['user_name']);
$user_name = ereg_replase ("",";*",$user_name);
$sql = "select * from user_data where user_name=....以下略
ってな感じ。
249nobodyさん:02/08/01 13:29 ID:???
>>247
テーブルをテキスト形式で書き出して
MySQLに読込ませるとか?
250nobodyさん:02/08/02 22:57 ID:mm5hI6ai
>>249
なるほど。なんか難しい処理を想像していたのですが、それで
解決しそうです。
251nobodyさん:02/08/03 03:11 ID:uQ0/1o1f
PHP で MySQL へのストリームの書き込みと読み出しってどうやるの?
C のコードは見つかったけど、php の実装って何も考えないオンメモリ
のヤツしか見つからない。
252nobodyさん:02/08/04 22:38 ID:FmVTsZMs
>248がなんかおかしいなぁ〜と思ってSD読んだら同じ事書いてあった

$user_name = ereg_replase (";*","",$user_name);
こうだよね。
253nobodyさん:02/08/06 03:58 ID:???
>>252

typoつっこみで申し訳ないが

× ereg_replase
○ ereg_replace

だよね。
254nobodyさん:02/08/06 22:52 ID:nNpJo1Dz
>>250
マジっすか。
初心者なんですが、テーブル作るの面倒だけど、
かねやんのMySQLAdminでテーブルだけ作って、cseで
csvから読み込みかな、と思ったんだけど。

Accessから、MySQLのテーブルにアクセスする手もあるから、
そっち経由での取り込みもありかな。
255nobodyさん:02/08/06 23:43 ID:???
元ファイルがAccessならMySQL側にデータベースだけ作成して置いてODBCに登録。
Accessで元ファイルを開いてエクスポートすればいい。
テーブルの回数分繰り返す必要があるけど、わりと楽な方法だと思う。
256254:02/08/07 20:16 ID:y8G64wf5
>>255
>>Accessで元ファイルを開いてエクスポート
おお、そりゃ凄いって思ってやって見たんだけど、
「ODBC呼び出しが失敗しました」エラーが出ちゃうんです。
MySQL用のドライバは登録済みで
MySQLからのテーブルのリンクや更新は出来るんですが、何が原因なんでしょ?
257nobodyさん:02/08/07 21:18 ID:???
>>256
他に何かメッセージ出てない?
Access2000→MySQL3.23.42(MyODBC-SJIS2.50.29.00と2.50.39.00)なら問題なくできてる。
MySQL側のデータベースにエクスポートするテーブルと同じ名前のテーブルが
あるとかいう落ちじゃないよね?
あとはODBCの登録のユーザの権限が足りないとか。
258254:02/08/07 23:44 ID:y8G64wf5
サバも借りてない、立ててないのでWin卓上実験状態なんですが
Access2000→MySQL3.23.49Max debug OS WinMe
あ、ODBCが安定版と3.51版二つ入ってるから、それかな?
どっちもeucのパッチ当ててるけど、3.51版じゃ、アクセスにリンクして
開いたとき、文字化けしちゃったんですよ。安定版なら問題無かったです。
同じテーブル名では無いです。ユーザ権限は、インストール直後の
匿名ユーザが生きてるので、それで入ってます。

259254:02/08/08 00:18 ID:???
ううーん、3.51版、アンインストールしてもエラーです。
「ODBC呼び出しが失敗しました」
[MicroSoft][ODBC Driver M (#0)
てなメッセージ。
MySQLにリンクしたテーブルは見えていて、更新も出来る状態です。
260nobodyさん:02/08/08 19:23 ID:???
エラー番号が0ってなんだろうな。
Accessのヘルプでものってない?
接続に失敗してるような気もするけど・・・
261nobodyさん:02/08/23 21:30 ID:XKTv55iv
すいませんバインド変数ってナンデスカ?
262nobodyさん:02/08/23 21:46 ID:???
むぅMySQLにはないらしい…
http://www.ipa.go.jp/security/awareness/vendor/programming/a02_01_main.html
dbiを理解しようとしてたので解らなかったのでした
263nobodyさん:02/08/29 18:57 ID:hMlp4ywr
MySQLの話題が無いのでage
264nobodyさん:02/08/29 20:29 ID:???
話題無いならageんな。
265nobodyさん:02/09/01 05:16 ID:ViCsMgui
初歩的な質問ですいません
これからMySQLを使おうと思っているのですが、
iモードでもMySQLは使えるのでしょうか?

よろしくお願いします。
266nobodyさん:02/09/01 09:18 ID:???
質問内容が意味不明です。
267みかか ドキュモ:02/09/01 09:23 ID:???
弊社の製品にインスコすることはできません。
268nobodyさん:02/09/01 20:01 ID:RgHbazF4
>>265
php+MySQLで、i-Mode用サイトを作り、i-Modeでアクセスすることは出来ます。
# EzWeb用も作ってくれ
269nobodyさん:02/09/04 01:49 ID:bvAr4qMV
今日から本格的にMySQLを使っているのだが、つかえねぇ。
・トランザクションが無い
・福問合せができない
・トリガも使えない

こんなのデータベースと呼ぶのか?
RDMNSが使いこなせないDQNが使う代物じゃねーの?
270PostgreSQL使い:02/09/04 02:17 ID:JM4qWSZC
>269
> ・トランザクションが無い

Use MySQL-MAX

> ・福問合せができない
> ・トリガも使えない

使わなくて済むようにプログラム書け、というのが
MySQLの主張です。

> こんなのデータベースと呼ぶのか?
> RDMNSが使いこなせないDQNが使う代物じゃねーの?

MySQLは、いわゆる「RDBMS」ではなく、「SQLで入出力できるストレージ」と
考えて使うのが正しいような気がします。
271nobodyさん:02/09/04 05:26 ID:USu456uJ
プログラミング経験はそれなりにあるのですが、
DBというものに最近はじめて触れました。
ゲームのようなものを作っています。
アカウントごとに、アイテムを持たせます。
そのアイテムの個数は、可変です。
このようなアカウントごとの所有アイテム情報をDBに保持したい時、
どのようにやるのがベストでしょうか?
272nobodyさん:02/09/04 11:11 ID:???
>>271
DBを使わないで、ファイルに保存するとして、アイテムの数を可変にするならどうする?

勝手に妄想してみると、アイテムの種類が多いor今後増えそうなら
id,アカウント名,パスワード,ハンドル,レベル,gold,・・・,アイテム数文字列
と言うようにしておいて(1レコード=1アカウントとする)、
「アイテム数文字列」に "アイテム1,アイテム2,・・・"と、カンマ区切りの文字列にしておく。
ただし、アイテム数でランキング表示するなどはやりにくい。
273nobodyさん:02/09/05 00:36 ID:uSX7DJwq
DBを使わない時は配列に入れてそれを保存しますよね。
配列を一つのカラムに入れるのはどうなのか?
と思っていたのですが、
それもアリなんですね。
274nobodyさん:02/09/05 01:09 ID:???
>>273
もう少し理解してから提案してください。
275271:02/09/05 01:12 ID:???
すみません273は私です。
272さんへのレスでした。
276nobodyさん:02/09/05 02:03 ID:???
>>271
アイテムの数や種類をその都度updateするんなら
きっちりと定期的にバキュームしてやらないと
DBが大きくなるぞ。

それより、テーブルを分散した方がよい。
ユーザー情報テーブルと、アイテムテーブルに。
アイテムテーブルには、
|ユーザーID|アイテム1|
|ユーザーID|アイテム2|
の様に・・・
ユーザー情報の方が大切なんだから、頻繁に更新しないほうが良い。
277nobodyさん:02/09/06 14:30 ID:???
>>271
普通に考えれば、
アイテムID, ユーザID のフィールドを持ったテーブル用意して
そこにがつがつ詰め込んでいくんじゃない?
全アイテムに固有のID持たせるのか、アイテム種ごとにID持たせるのか、
とか、仕様によっていろいろ変ってくるだろうけど。
278nobodyさん:02/09/06 20:14 ID:EPlc0hR1
こんな表がありまして、

id カテゴリ
+-+---+
|0| A |
|1| A |
|2| B |
|3| B |
+-+---+

1・カテゴリで分類して
2・分類内では ID が一番大きいやつ
をとりだしたいのです。

欲しい結果
+-+---+
|1| A |
|3| B |
+-+---+

で、この場合SQL はどうなるんでしょうか?

SELECT id,`カテゴリ` FROM `表` GROUP BY `カテゴリ`

とかやってみたんですが、2番目の条件がうまくいきません

おしえてください
279:02/09/06 20:17 ID:zUklKDWI
超適当

SELECT max(id) , カテゴリ FROM 表 GROUP BY カテゴリ ;

ダメっぽいかな??
280nobodyさん:02/09/06 20:28 ID:EPlc0hR1
>>279
すんません、それでうまくいきます(^^;

本当にしたかったのはじつはこんなことなんです

id カテゴリ 名前
+-+---+------+
|0| A |あああ|
|1| A |いいい|
|2| B |ううう|
|3| B |えええ|
+-+---+------+

1・カテゴリで分類して
2・分類内では ID が一番大きいやつ

3・名前欄付きで

とりだしたいのです。

欲しい結果
+-+---+------+
|1| A |いいい|
|3| B |えええ|
+-+---+------+

281nobodyさん:02/09/06 20:29 ID:EPlc0hR1
検索してると サブクエリ使え とか出てくるんですが...
MYSQLなのよ(;´д⊂)
282nobodyさん:02/09/06 20:32 ID:EPlc0hR1
ちなみに、
SELECT MAX(id),`カテゴリ`,`名前` FROM `表` GROUP BY `カテゴリ`

とやると
+-+---+------+
|1| A |あああ|
|3| B |ううう|
+-+---+------+
になります
2838月のクリスマス ◆zzfy/JR2 :02/09/06 20:47 ID:zUklKDWI
>>282
>SELECT MAX(id),`カテゴリ`,`名前` FROM `表` GROUP BY `カテゴリ`
これって GROUP BYの式がありません
というエラーが出ませんか???
2848月のクリスマス ◆zzfy/JR2 :02/09/06 20:50 ID:zUklKDWI
>>282
もっと良いやり方はあると思うけど

select a.*
 from (select max(id) id from test_tbl group by cat) b,
    test_tbl a
where a.id = b.id ;

こんな感じでどうでしょうか???
285nobodyさん:02/09/06 21:09 ID:EPlc0hR1
>>283-284
ありがとうございます。MySQL なんで副問い合わせができないんですよね(;´д⊂)
シンタックスエラーが出ます

ちなみに、282 の式だと エラーは出ません。
MySQL では GROUP BY にないフィールドでも普通に選択できます。
ただ、グループ内のどれが選ばれるかわからない諸刃の剣
グループ内で値がそろってるときには便利なんですが
286nobodyさん:02/09/07 12:01 ID:???
php4.2.3:Made MySQL rollback open transactions when the request ends. (Georg)
どうよ?
287nobodyさん:02/09/10 10:05 ID:JRVUQPEU
すいません。PHP初心者です。
挿入がうまくいきません。コードは以下です。
【PHP】質問スレッドでたずねたのでマルチになりますが。。。
/**
* インサートテスト
*
* @access public
* @param ProductState $ps 製品状態情報
*/
function insert3($ps)
{
 // DB接続
 $this->connect(); // $this->db = DB::connect( $dsn )にて取得。
 // SQL文
 $sql = "INSERT INTO user (id,name,date) VALUES (?,?,?)";
 // Statement取得
 print "date=" . date("Y-m-d H:i:s",time()) . "\n";
 $stmt = $this->db->prepare( $sql );
 // SQL発行
 // $this->db->execute($stmt, array($ps->id,$ps->name,time())); //これもだめでした。
 $this->db->execute($stmt, array($ps->id,$ps->name,date("Y-m-d H:i:s",time()) ));
 // DB切断
 $this->db->disconnect();
}
※日付は現在時刻を挿入する。
※Access2000(MySQLでありません)のデータ型→日付/時刻型 (書式:yyyy/mm/dd HH:mm:ss)
※日付型以外(文字列、数値型)はうまくいきます。
エラー内容
SQLエラー → ステートは37000

288nobodyさん:02/09/10 14:33 ID:???
>>280
SQL だけで解決するのは諦めるというのはアリ?
289287:02/09/10 14:38 ID:20uIzqy9
>>288
とりあえず。現状、テーブルに規定値 「Date()+Time()」が入るようにしていますが、これからことを考えて知っておく必要があるのです。
290nobodyさん:02/09/10 14:39 ID:20uIzqy9
>>288
すいません。288は 280に対する答えでした。
申し訳ありません。
291nobodyさん:02/09/11 23:36 ID:thYL5S/g
>>288
ありがとうございます
特に処理が重くならないようなら...
メモリにいったん取り込むのはどうなんだろう、という気はします
292nobodyさん:02/09/12 11:07 ID:8CV8Mtvh
PHP+MySQLで日本語の検索がうまくいきません。

LIKE '%(ア%' AND 'ア%' など。
どなたか教えてください。

よろしくお願いします。

293M:02/09/12 17:59 ID:???
MySQLは日本語有効にしてる?
DBに格納されている文字と検索文字の文字コードは同じになってる?
294271:02/09/15 05:59 ID:b9MOuSqZ
>>276-277

ありがとうございました。
アドバイスを参考にして設計しなおしました。
ユーザー情報とは別に「所有アイテム情報テーブル」を作って、

所有者ID
番号(所有者IDごとに連番)
アイテムID
その他…

の列を作ります。
削除/取得時のレコードの処理をすっきりさせるため、
アカウント作成時に、
アイテム最大所持可能数分のレコードを、あらかじめ番号を振って作っておきます。
(まとめて並べておいた方が検索が速くなるんじゃないかという事も期待して)
アイテム取得時には、
アイテムID=nullで一番若い番号のレコードに、情報を書く。
アイテム削除時には、
当該レコードのアイテムIDをnullにする。

検索速度を上げるために、ユーザーIDでインデックスを作る。

というようなものです。
これは妥当でしょうか?
295nobodyさん:02/09/16 05:55 ID:???
>>294
>アイテム最大所持可能数分のレコードを、あらかじめ番号を振って作っておきます。
>(まとめて並べておいた方が検索が速くなるんじゃないかという事も期待して)

updateをしたら、見た目には並んでても、データベースの内部的にはバラバラになっていきます。
それに、アカウント取るだけ取って利用しないユーザーも居るはず。
今現在使ってるレコード以外、作る必要なし。

ま、MySQLなら相当なレコード数じゃ無い限り、スピードの事は考えるな。
インデックスも、レコード数が少なければ逆効果という罠。

296nobodyさん:02/09/18 10:52 ID:uXrI3/gA
>>295

>インデックスも、レコード数が少なければ逆効果という罠。
まぢですか!( ̄□ ̄;)!!

実際、どれくらいから効率的なのでしょうか?
297294:02/09/19 10:36 ID:+XOYWduW
>>295

そうなんですかー。
DBの速度とか負荷が未経験なので、
かなり臆病なプログラミングになってる感じなんですが、
そんなに細かい気を遣う必要もないんですね。
298名無しさん@そうだ選挙にいこう:02/09/19 10:57 ID:D+O6nPi3
MYSQLにデータを書き込む時ってロックはいるの?
調べてもわかりません。教えてください。
299nobodyさん:02/09/19 22:38 ID:jD2DR/iO
>>185
外注してください。
お願いします。
300nobodyさん:02/09/20 00:57 ID:???
>>298
>MYSQLにデータを書き込む時ってロックはいるの?
データの整合性を保つため、基本的に必要。
ただし、CGIなどでファイル書き出しと読み込みでかち合うために、
ファイルを壊す、といった事は無い。
301nobodyさん:02/09/20 14:10 ID:???
>>300
>CGIなどでファイル書き出しと読み込みでかち合うためにファイルを壊す

こんな事ってあるの?
同時書き込みだけだと思ってたが…
302nobodyさん:02/09/20 23:44 ID:???
ファイルを壊す、といった事は無い。
ファイルを壊す、といった事は無い。
303nobodyさん:02/09/21 08:50 ID:0HoT4fY5
あるフィールドの値をインクリメントしたい時に、
selectした値をPHPで++してupdateするのではなく、
一文のSQLで書くことはできませんか?
304nobodyさん:02/09/21 16:29 ID:???
コネクションプールとか考えているいます?
PHPそのものの機能にはないですよね?
自前でプールクラス用意するしかないのかな
305300:02/09/21 16:56 ID:???
>>302
>ファイルを壊す、といった事は無い。
そうだね。ファイルの中身が壊れる、だ。

>>303
update test set value=value+1 where id=1
306nobodyさん:02/09/21 20:15 ID:bcr2D3RX
あの、PHPとMYSQL
を使った無料検索エンジンスクリプトって
どこかにないでしょうか?
アクセスランキングじゃない奴です。
307303:02/09/21 20:28 ID:???
>>305
ありがとうございました。
308nobodyさん:02/09/22 01:40 ID:???
>>306
お前ラーメンマン?
309あぼーん:あぼーん
あぼーん
310nobodyさん:02/09/24 16:49 ID:???
>309
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < 通報しますた!
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д` ) < 通報しますた!
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) ツーホーシマスタ!
    / ./     ( ヽ、     / /⌒> )     ゚(  )−
   (  _)      \__つ  (_)  \_つ     / >      (・∀・)ツーホー!
311うんこ:02/09/27 12:51 ID:s5yVUu+t
312304:02/09/28 00:48 ID:c3sX3Ag2

>>311
あ、ありがとう。いつも普通にmysql_pconnect()使ってるのに
まったく気づいてなかった・・・。
たしかにこれでいけてるようですね。
今度時間があれば負荷はかってみます。
313nobodyさん:02/09/28 01:40 ID:AP2KcdnO
>>308 ピンポーン。当たり。今、勉強中。がんばるよ。
>>313
おう!がんがれ!
315nobodyさん:02/09/30 09:52 ID:KKxE6nj4
MySQLでRollBackだけができません...
みなさんどのように対処してます?
316nobodyさん:02/09/30 11:29 ID:???
>>315
ネタかい?
ロールバックできないのはMySQLの仕様だぞ?
317315:02/09/30 11:34 ID:KKxE6nj4
>>316
resありがとうございます
バージョンによっては出来るとか出来ないとか書いてあったんです・・・
それで出来ない人はどういうふうに対応してるのかなって思って
あうぅ。。。トランザクションエラー処理かけて戻したいですぅ・・・(T-T
318noodyさん:02/09/30 11:40 ID:???
Maxでできるんじゃねえの?
319317:02/09/30 12:07 ID:KKxE6nj4
>>318
Maxですか???
320512:02/09/30 12:29 ID:???
>>317

MySQL-MAXってやつだよ
321noodyさん:02/09/30 12:40 ID:???
322319:02/09/30 12:50 ID:KKxE6nj4
>>320-321
ありがとうございます
さっそく調べて実行してみます
323319:02/09/30 13:19 ID:KKxE6nj4
うちのMySQLのバージョンが古くてinnodbが含まれていないようなのですが、
http://www.innodb.comからダウンロードして設定すれば使えるようになるかな
324319:02/09/30 13:47 ID:KKxE6nj4
うちのバージョン
mysql Ver 11.12 Distrib 3.23.33, for pc-linux-gnu (i686)
これはバージョンアップした方が早かったりするのか・・・
325nobodyさん:02/10/01 02:33 ID:???
Mysqlのデータを300になったら古いのから削除するには
php側はどのように書けばいいですか?
326nobodyさん:02/10/01 14:28 ID:EJy0Vdqk
>>325
300になったらって、なにが300かわからん
具体的な表があると答えやすいかも
327319:02/10/01 15:13 ID:dCttkLX0
3.23.33ではrollback処理ができないので、
LOCK TABLEでいくつかの処理が行えるという事がわかったんですが
使用方法がいまいちわかりません・・・。
rollback処理のように開始状態に戻すにはどのようにすればよいのでしょう?

↓普通にOCK TABLEを使用した例です
mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
mysql> insert into real_table select * from insert_table;
mysql> TRUNCATE TABLE insert_table;
mysql> UNLOCK TABLES;

よろしくお願いします
328nobodyさん:02/10/01 15:28 ID:???
>>326
ありがとうございます。
┌──┬────┬────┐
│ id  │ Mem   │ Mail   │
├──┼────┼────┤
│1   │Xxx    │Xxxx   │
├──┼────┼────┤

│    │      │      │

│299 │Xxx    │Xxxx   │
├──┼────┼────┤
│300 │Xxx    │Xxxx   │
└──┴────┴────┘
         ↓
┌──┬────┬────┐
│ id  │ Mem   │ Mail   │
├──┼────┼────┤
│2   │Xxx    │Xxxx   │
├──┼────┼────┤

│    │      │      │

│299 │Xxx    │Xxxx   │
├──┼────┼────┤
│301 │Xxx    │Xxxx   │
└──┴────┴────┘
データが300というのはこんな感じなんですが、掲示板のように後からデータ入力されて蓄積されるので、
id 1が古いデータになるので、id 301 が追加されると、id 1 が削除される。
この時の300という上限枠をどのようにしたらいいのか
わからない、というかどんな感じにすればいいでしょうか?お願いします。
329hmk:02/10/01 15:50 ID:???
>>328 MySQLは良く知らんが、
まず、
"SELECT COUNT(*) FROM the_table" の結果を変数 $cnt に代入せよ。
そして、
"DELETE FROM the_table WHERE id<=${cnt}-300" せよ。
330nobodyさん:02/10/01 16:19 ID:???
>>329
あーなるほど、わかりました。
ありがとうございます。
331nobodyさん:02/10/03 13:23 ID:m4AMz0v6
>>329
COUNT しちゃだめっしょ うまくいくのは一回目だけ...
332nobodyさん:02/10/03 13:32 ID:???
行数拾って300引いて、
正ならその分だけ上から Delete。
333nobodyさん:02/10/07 16:51 ID:???
あげ
334nobodyさん:02/10/07 19:16 ID:???
何故この板はこんなに人が少ないんだ?
Webプログラミングしてる人間が少ないのか?
335hmk:02/10/07 19:57 ID:???
>>331
そうでした。失礼しました。

>>334
何ででしょうね。
本業でやってる人はこんなところに来る必要なないにしても、趣味でいじくってる人は沢山いてもよさそうだが。
他の板とか2ch以外のところで解決してるのかな。
336nobodyさん:02/10/08 14:53 ID:???
ページの分割で Mysqlのレコードの20から30を呼び出すにはどうすればいいですか?
337nobodyさん:02/10/08 15:40 ID:???
338nobodyさん:02/10/08 16:47 ID:???
>>337
ありがとう
339nobodyさん:02/10/08 17:02 ID:???
>>337
ありがとうって....
あんたあれだけで解るのか?ある意味凄えーーー
340nobodyさん:02/10/09 15:13 ID:???
hoge というテーブルが存在するかどうかを調べたいのですが、
どのような方法があるのでしょうか?

現在は SELECT 文を発行して
mysql_error() から判断していますが、
何か他にスマートな方法があるのではないかと思いまして……。
341nobodyさん:02/10/09 15:42 ID:k7vFrv7Z
>>340
あんがい、'show databases' がつかえたりして
342 :02/10/09 15:54 ID:???
あの〜激しくスレ違いな気がしたのですが質問させていただきます。
PHPで一階層上のファイルを指定するにはどうしたらよいのでしょうか?
HTMLで1階層上を指定するには「../」(ドットドットスラッシュ)ですが、
PHPで同じ事をやろうとしてもうまくいかないみたいです。
すごく初心者な質問で申し訳ないのですがどなたかご教授お願いします。
343hmk:02/10/09 21:12 ID:???
>>342
【PHP】質問スレッド Part5
あたりで質問したら?
344nobodyさん:02/10/11 16:35 ID:F1zE+kMi

>>14-50
>>298-305

すいません結局頻繁に書き込みされる掲示板などで
MySQL使うな!ってことですか?

MySQLでのトランザクションは遅くてインデックスつくれないカラムとかある
lock tables ではテーブルにロックがかかってしまう
ロックなしではファイルの中身がおかしくなる危険がある

get_lock()の使い方がよくわかりません!
↑これで解決できますか?
345質問:02/10/11 17:04 ID:5gjwH8o2
phpでサイトを組むことになりました。
頻繁に更新やバージョンアップが行われそうなかんじです。

そこで質問ですがPHPでのコーディングの見本みたいなのってありますでしょうか?
こうコーディングしろみたいな。
なんか一冊本を読んでみたら、あんまりいいソースではなさそうなので。
へんにテクニックはしったトリッキーなのではなく実際の運用、メンテなんかも考慮して
いいソースがあったら教えてください。
346nobodyさん:02/10/11 17:27 ID:vFRmIjHv
>>344
よかったら俺の開発したクラスでも使いたまへ。

/*
ロックするクラス
使い方
//インスタンス生成→初期化→ロック実行
$issue_lockSet = new lockSet;$issue_lockSet->init("lockman",10);$issue_lockSet->lock_suru();
// 更新作業する。
//lockをはずす
$issue_lockSet->lock_kaijo();unset($issue_lockSet);
*/

class lockSet{
var $string;var $timeout;
function init($inputString, $inputTime)
{
$this->string = $inputString;$this->timeout = $inputTime;
}
function lock_suru(){
global $my_con;
if (!$result_lockSet = @mysql_query("select GET_LOCK(\"$this->string\",$this->timeout)",$my_con)){
print "データのロックに失敗しました コード=".mysql_errno()."<br>";exit;}
$get_lock = mysql_fetch_array($result_lockSet);
if ($get_lock[0] != 1){print ("他のスレッドによるロックがかかっています<br>しばらく置いてからもう一度トライしてください。");exit;}
mysql_free_result($result_lockSet);
}
function lock_kaijo(){
global $my_con;
if (!@mysql_query("SELECT release_lock(\"$this->string\")",$my_con)){print "ロックの開放に失敗しました<br>";exit;}
}
}
347nobodyさん:02/10/11 19:53 ID:???
>ロックなしではファイルの中身がおかしくなる危険がある
これはMySQLに限ったことじゃないんじゃないのか?
348名前:02/10/11 20:15 ID:???
すいません。PHP&mysqlでデータベース使おうと思ってるんですが、
ローカルから接続しようとすると
DBI->connect(atmarkit:localhost) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at list1.pl line 5
Can't call method "prepare" on an undefined value at list1.pl line 6.
とやられてしまいます。
http://www.atmarkit.co.jp/flinux/index/indexfiles/mysqlindex.htmlの記事を読んで、そのままやってみたのですが、うまくいきません。
権限の問題なのでしょうか?
349nobodyさん:02/10/11 20:54 ID:???
>>348

何故 ".pl" なの?
350344:02/10/11 21:06 ID:F1zE+kMi
>>346さんありがとうございます!!
ってちゃんとクラス使ったことのない初心者なんでちゃんとクラスの勉強して
使わせて頂きます!

>>347
そうですね、MySQlだけ、みたいな書き方してましたね
紛らわしいいカキコですいませんでした。
351nobodyさん:02/10/11 21:39 ID:???
2つのルーチンで半分ずつデータを作って、それを別のルーチンが全部読み込むという処理なんですが、
A,B,C,D,E,F,G,H,I
と1つのテーブルで処理するのと
A,B,C,D,E
A,F,G,H,I
と2つのテーブルにするのとでは、どちらが処理時間が短く済みますか?
352nobodyさん:02/10/12 01:10 ID:???
>>351
ケースバイケースだね。
レコード数にもよるし…

毎度毎度joinするなら、一つにして置いた方が良いけど、
それぞれ別で使うけど、たまにjoinする位なら分けても良いだろうね。

どんな処理が一番使用頻度が高いのか見極めないと…

単純に、全てのデータを読み込むだけってなら、一つの方。
353nobodyさん:02/10/14 20:41 ID:OXcSlbm9
>>348
http://www.atmarkit.co.jp/flinux/rensai/mysql04/mysql04b.html
のやつそんまま動かしたね?それPerlの記事…
http://www.atmarkit.co.jp/flinux/rensai/mysql05/mysql05b.html
を見られたし。
354nobodyさん:02/10/14 23:11 ID:BzOMwuS2
著しく既出かもしれませんがPHP+MySQLで

$sql="select * from table1 where year>1998 and month>9 ;

where以降の複数の条件をプルダウン形式か何かで選択して、ボタンで実行するのに何か助言が参考URLがあればよろしくお願いします。
355nobodyさん:02/10/15 00:00 ID:???
$sql = "SELECT * FROM table1 WHERE year>{$_GET['year']} AND month>{$_GET['month']}";
ってか質問するレベルじゃないだろ
356nobodyさん:02/10/15 00:01 ID:???
XSS に気を使えよ。
357hmk:02/10/15 00:09 ID:JxJ8+H53
>>354
MySQLはよく知らんが、以下のようにすればよいでしょう。WHEREで指定する条件を以下のように配列に入れてからimplode()する方法ですと、条件を簡単に付け加えられるので皆様におすすめします。PHP4の場合、フォーム変数を$_GET等で取得するのを忘れずに。

<?php
// ここでDB接続する。

$where[] = "year>${year}";
$where[] = "month>${month}";
$sql = "SELECT COUNT(*) FROM table1 WHERE " . implode(" AND ", $where);

// 結果を$cntに代入する処理をする。
?>
<html><body>
<?php if (empty($submit)) { ?>
<form action="">
年を選んで下さい。
<select name="year">
<option value="1999">1999</option><option value="2000">2000</option><option value="2001">2001</option>
</select><br>
月を選んで下さい。
<select name="month">
<option value="1">1</option><option value="2">2</option><option value="3">3</option>
</select><br>
<input type="submit" name="submit" value="送信">
</form>
<?php } else { echo "該当${cnt}件"; } ?>
</body></html>
358nobodyさん:02/10/15 00:52 ID:???
ってかみんなユーザーからのリクエスト(POST、GET)の値を生でSQL文とかに入れてんのか??
セキュリティ的にヤバイだろ。

>357
そんなんだと単純なSQL文にしか対応できないからヤダ
359hmk:02/10/15 01:27 ID:JxJ8+H53
>>358
>セキュリティ的にヤバイだろ
「生で」の意味がよくわからないが、掲示板程度のものならセキュリティなんて問題にならないと思われ。

>そんなんだと単純なSQL文にしか対応できないからヤダ
そんなことはない。

例えば、以下のようにすれば状況に応じて条件を加えたり外したりできる。
if ($male_only == TRUE) {
$where[] = "SEX='male'";
}

また、357の例だとAND条件しか出てこないが、工夫次第でOR条件も組み合わせられる。
上記方法は、約一年の業務経験から、コーディング速度、メンテナンス性共に高いものだと思われます。

お前ら、WHERE句の柔軟な整形法について何か他の意見はありませんか?
360nobodyさん:02/10/15 01:29 ID:???
> 掲示板程度のものならセキュリティなんて問題にならないと思われ。

氏ねよ。
361nobodyさん:02/10/15 01:31 ID:???
>>358
> ってかみんなユーザーからのリクエスト(POST、GET)の値を生でSQL文とかに入れてんのか??
> セキュリティ的にヤバイだろ。

356氏が喚起してる。
362nobodyさん:02/10/15 01:34 ID:lZ9npSqA
>>357
うまく行きました。ありがとうございました。
OR条件もうまくいきました。感謝です。
363hmk:02/10/15 01:59 ID:JxJ8+H53
>>360,361
掲示板程度云々は言い過ぎました。失礼しました。
だけど、SQLの検索条件にするだけなら、「生」で問題はないのでしょう?
364nobodyさん:02/10/15 02:26 ID:0Z8FjDM5
>>363
「ちょっとくらいなら」とか言って生で中出しするタイプだな。
365 :02/10/15 02:37 ID:???
「生」で insert
366hmk:02/10/15 03:53 ID:OUYqpsts
携帯からのカキコです。

よくよく考えてみたのだが、ユーザからのデータは生のままDBに入れておくほうが良いと思う。セキュリティが問題となる場面では、DBから取り出した後にデータを加工すれば良いのですから。

ところで、不要/不正なデータをINSERTしないのは良いとしても、何らかの加工をしたデータを挿入するのはブ男のすることだと思う。
367nobodyさん:02/10/15 05:25 ID:???
>>366
全てをすぐに加工するんじゃなく、
一度チェックしてから、必要であれば加工をする…ってのが普通だと思う。
368hmk:02/10/15 13:47 ID:???
後で使うときのためにデータを加工することは、元のデータがもつ情報を減らしているようなものである。
処理速度を稼ぐためだとか、プライバシーを守るためだとかいう理由があるのなら、加工されたデータをDBに保存しておいてもよいと思うが。
369nobodyさん:02/10/15 21:32 ID:V68LrvQr
$result = mysql_query("delete from data_T where id_no='$id_no_sql' and deleteKey='$deleteKey_sql'");
if (! $result) echo mysql_error();
$affectedRows = mysql_affected_rows($result);

という何の変哲もないコードなんですが、
affected_rowsの行でエラーになります。
delete自体は問題なく行われているのですが…
何故なんでしょう?
370nobodyさん :02/10/15 21:55 ID:???
mysql_affected_rowsは引数に接続IDをとるみたいだから
mysql_connectまたはmysql_pconnectの戻り値を渡すのでは?
371nobodyさん:02/10/15 22:04 ID:???
>>370

仰る通りでした。
引数に結果IDと接続IDを取るパターンがあるんですね。
すべて結果IDと思いこんでいたのでかなり悩みました。
ありがとうございました。
372さばかん:02/10/16 13:05 ID:IQMQRi3E
せめて特殊文字列のエスケープくらいはしてね
SQL構文にそのままユーザー入力血を入れるのはやめれ
「CGI」 と 「セキュリティー」で検索すれば
いろいろ参考資料が出てくると思うが

ここに出てるのはサンプルなんで
mysql_escape_string とか使ってないだけだよね……
本物ではちゃんとエスケープしてるよね……
373nobodyさん:02/10/16 13:57 ID:???
insert into t_hoge( comment ) values( '$a' );

とあるときに、

$a に 「');update t_hoge set comment='';」

とされるとか。
374nobodyさん:02/10/17 17:54 ID:UeoXfZ3y
375nobodyさん:02/10/17 20:22 ID:???
とりあえず addslashes() すれば O.K. なのでしょうか?
376nobodyさん:02/10/17 23:47 ID:???
MySQLってバインドないんだよね。
377nobodyさん :02/10/18 00:50 ID:???
なんでおまえらおしえちゃうんだよ。
hmkのテーブルをdropしまくりたかったのに。
378hmk:02/10/19 01:36 ID:???
>>377
まだ自前のサイト作ってないからセーフでした。

今更ながら、漏れが仕事やってたときに作ったスクリプトではヤバいかも。
ちゅうことで、>>377君、直しておいてくだちい。
379nobodyさん:02/10/25 21:04 ID:8s4WkUQV
redhat7.3にrpmでmysqlインストールして
mysql -u root
set password for root=('設定するパスワード');
flush privileges;
で最後のとこで
ERROR 1045 Access denied for user: '@localhost' (Using password: NO)
ってでてつまってます。
なんか他のユーザー作成とかなにかやろうとするとすぐ同じエラーがでてきちゃう
んですけど、だれかたすけて〜
380nobodyさん:02/10/26 05:55 ID:???
>>379
mysqladmin
381PHP:02/10/31 10:48 ID:Ey5wVXnt
MySQLで検索システムを作成した場合
データ件数が50万件くらいの規模ならサーバスペックはどれくらい必要なの?
ピークは1時間に2000件くらいかな。

PHP+Apacheのサーバを別に立てて検索させます。
みなさまプリーズ!
382nobodyさん:02/10/31 10:50 ID:YIQwg1nb
pV1Gx2
383nobodyさん:02/10/31 13:02 ID:???
>>382
そんなにいらんだろ
384PHP:02/10/31 13:14 ID:Kody0HX+
381です。
OSはRedHat7.2を考えています。

>>382
>>383
CPUってそんなもんですか
もっと情報キボンヌ
385nobodyさん:02/10/31 13:21 ID:???
MMX Pentium 200MHz
386nobodyさん:02/10/31 14:08 ID:???
>>381
>ピークは1時間に2000件

なら、一件辺りは1.8秒だろ。
家のPentium 133MHzでも十分な結果を出せる
相当複雑な問い合わせをしない限り

で、複雑なことすんの?
387PHP:02/10/31 14:43 ID:Ey5wVXnt
381です。

>>386
検索一覧と、検索集計です。
テーブルは2テーブル(マスタ、明細)を利用します。
SQLは以下の通りです。
・select * from detail where xxx= 999 order by yyy;
・select * from detail where xxx = 999 order by zzz ;
・select aaa,sum(bbb),sum(ccc) from detail where xxx = 999
   group by ddd
   order by sum(金額) ;
388nobodyさん:02/10/31 22:42 ID:???
>>378
何処だろう?
デジタルニューディールのアレかな…?(w
389nobodyさん:02/11/04 00:32 ID:laarhpsv
板違いっぽかったので、ここにきました。
MySQLとPostgreSQLで

table1
id
name

table2
id
date_from 期間はじめ
date_to 期間終わり

というテーブルで、

任意の日付がtable2の期間に引っかかる場合のtable1.name
を求めるにはどうしたらよいですか?
table1のidについてtable2で複数の期間が設定されています。

よろしくお願いします。
390nobodyさん:02/11/04 00:50 ID:???
>389
SELECT t1.name FROM table1 AS t1,table2 AS t2 WHERE t1.id=t2.id AND (NOW() BETWEEN t2.date_from ND t2.date_to) GROUP BY t1.name
こういうこと?
391389:02/11/04 01:34 ID:laarhpsv
>>390
サンクスコ。
うまくできました。ありがとうございました。
392nobodyさん:02/11/07 00:21 ID:xJ2aD5Sd
jpegファイルを保存するには、どうしたらいいですか。
393nobodyさん:02/11/07 00:32 ID:???
394nobodyさん:02/11/07 18:20 ID:Go7yQUbZ
お願いします。

テーブルA
会員番号 キー
名前

テーブルB
取引番号 キー
会員番号
取引年月日
取引額
取引内容

で、テーブルAに会員番号があってテーブルBにデータがない
(つまり会員登録があるが、取引がない)ものを
列記したいのですが、どうしたらいいですか。
395nobodyさん:02/11/07 19:09 ID:???
何故PHPはMySQLとどのような関係があるのかと激しく既出な質問をしてみるテスト
396nobodyさん:02/11/07 20:07 ID:???
>何故PHPはMySQLとどのような関係があるのか
それ以前に日本語を・・・ゲホゲホ
397nobodyさん:02/11/07 21:02 ID:py1Qds2+
中島くん
398nobodyさん:02/11/07 22:02 ID:???
我ながら禿しく厨な質問な気がしますが、
ぐぐっても有用な情報が見付からなかったんで、よろしければ教えて下さい;
最近PHPを始めた者で、多人数同時参加型のウェブゲームを作っています。
今までPerlでゲームを作る際、データを保存するにはテキストファイルを用いてましたが、
データ量やファイルアクセスが多い場合、データベースファイルの方が良いということを聞きました。
しかし、生まれてこの方データベースというものには一切触れたことがありません;
色々調べながら取り合えず動こうと思い、MySQLをインストールしたのですが、結局さっぱりです。
それどころかデータベースの概念(?)すらはっきりしていない状態です。。。
やりたいことは決まっているのですが、まず何を学べばいいか解らずに行き詰まっています。
上記のような使い方をする場合、まず何から手を付ければいいでしょうか。
参考になるサイトや書籍の紹介でも構いません、何かヒントを下さい;
お願いします。
399nobodyさん:02/11/07 22:14 ID:???
>>398
ttp://www.hotwired.co.jp/webmonkey/backend/?tw=backend
「PHP/MySQLチュートリアル」
「はじめてのデータベース」

とかどうよ?
400nobodyさん:02/11/07 22:23 ID:cSdInRt3
>>394

where テーブルA.会員番号 not in ( select テーブルB.会員番号 from テーブルB )

が使えればなぁ。。。
401nobodyさん:02/11/07 22:49 ID:???
>>394
MySQLは触ったこと無いがOUTER JOINがつかえるようなので
SELECT テーブルA.* FROM テーブルA
LEFT JOIN テーブルB ON テーブルA.会員番号 = テーブルB.会員番号
WHERE テーブルB.会員番号 IS NULL;
とかできるんじゃねーの?
402398:02/11/07 23:01 ID:???
>>399
あ、ありがとうございます!
早速勉強してきまつ。
403394:02/11/07 23:51 ID:EWRqr+Ty
>>400
私も最初それを試したのですが、エラーでした。他のDBMSではできたりするんですかねえ。

>>401
サンクスコ。できました。ありがとうございました。
404nobodyさん:02/11/08 00:50 ID:???
405nobodyさん:02/11/08 01:08 ID:Veqht0/Q
質問があります。
MySQLで、例えば
A B C
というフィールドがあるとして、C列にA列とB列を足した値を
入れておくことってできますか?しかも、A列とB列の値が変われば
自動的にC列の値も変わるというようにできますか?
やはりPHPなどのプログラムをかまさないとできないものでしょうか。
406nobodyさん:02/11/08 01:39 ID:???
select A, B, A + B from hoge;
407nobodyさん:02/11/08 10:05 ID:OADrmVQD
>>405
C列は不要。406のやり方でA+Bを取ってくればいい。
408nobodyさん:02/11/08 10:40 ID:???
>>406
>>407
情報ありがとうございます。
例えばPHPで、そのA+Bを使用したい場合はどのようにすれば良いでしょうか?
フィールド名があれば、mysql_fetch_arrayを使用して
例えば、$a = $data['a']として扱えますよね。
でも、A+Bはフィールド名は無いですよね。
その場合は、mysql_fetch_rowを使用して、
$total = $data[2]と言うように設定して使用するべきでしょうか?
アドバイスお願いいたします。
409nobodyさん:02/11/08 15:15 ID:???
YourSQL
410:02/11/08 17:22 ID:???
>>408
SELECT a,b,a+b as c FROM hoge;
というようにasを使えばmysql_fetch_arrayでいけます。
お試しあれ。
411nobodyさん:02/11/10 18:52 ID:???
The Cook, The Thief, His Wife and HerSQL
412nobodyさん:02/11/12 01:24 ID:SsiSHuUc
405さんに似た質問なのですが、
列Aと列Bをくっつけ、さらにcount(*)で数えて2以上あるデータを多い順から並べるということをやりたいのですが
なかなかうまくいきません。
mysql_query("select A_col,B_col as DATA1 ,count(*) as DATA2 from TABLE_1 group by DATA1 having DATA2 >=2 order by DATA2 desc");
↑は列B_colのデータでのみ集計してこなくて詰まっています。
---------------TABLE1の中身
A_col  B_col
aaa   111
bbb   111
aaa   111
bbb   222
---------------
↑のデータで「aaa111 が 2」を出力したいのです。助けてくださいまし(;´Д`)
413nobodyさん:02/11/12 01:49 ID:TeIlFbWy
select concat(A_col,B_col) as DATA1,count(*) as DATA2
from TABLE_1
group by DATA1 having DATA2 >=2
order by DATA2 desc
414nobodyさん:02/11/12 02:05 ID:???
>>413
ありがとうございます、うまく結果を返せました!
415nobodyさん:02/11/12 14:59 ID:???
初心者ですみません。
MySQLであるフィールドを全部取得し、
$sql = "select count from dataA
countフィールドの数字を合計したいと思い、
$reslut = array_sum (A,B,C,・・・) ; というのを調べてきたのですが、
$sqlを(A,B,C,・・・)というような配列にするのはどうしたらよいでしょうか?
教えて君でゴメンなさい。お願いします。
416nobodyさん:02/11/12 16:02 ID:???
>>415
 なにも取り出して計算しなくてもです :)
SELECT SUM(count) FROM dataA
 で良いんでない?
417nobodyさん:02/11/13 00:29 ID:???
>>416 さん
ありがとう!やってみます。
418nobodyさん:02/11/13 00:58 ID:???
やってみましたが・・・ Resource id #2 でてくる(T_T)

$sql = "select SUM(count) from dataA";
$result = mysql_query ($sql) ;
if (!$sql)
{ print("SQLの実行に失敗しました") ;
exit;
}
print ("<center>過去実績:<br>" . $result . "件。</font></p>") ;
419nobodyさん:02/11/13 01:17 ID:???
>>418
お、おまえ、PHP+MySQL完全に初めてだな。
そんなんで$resultの中にSUM(count)の結果が入ってるなら
select userid,password,mail_address from user
とか実行したら$resultには何が入ってくると思う?

http://www.hotwired.co.jp/webmonkey/2000/01/index3a_page2.html
420nobodyさん:02/11/13 02:12 ID:???
>>419 さん
プログラム自体初めてに近いです。独学で試行錯誤で頑張ってます。
初心者にレスありがとうございます。
他の select 文は表示されるのですが、これは表示されないです。
421419:02/11/13 02:29 ID:???
$sql = "select SUM(count) AS SUMCOUNT from dataA";
$result = mysql_query($sql);
if( $row = mysql_fetch_array( $result ) ){
  print ("<center>過去実績:<br>" . $row[SUMCOUNT] . "件。</font></p>") ;
} else {
  print ("失敗。") ;
}
こんなんでいけると思う。
というか入門書でも買った方がいいよ。
数千円のお金より垂れ流れていく時間のほうが大事っす。
422nobodyさん:02/11/13 02:37 ID:???
基本的な構文>421みたいなのを覚えれば、後は関数を組み合わせたりして応用できると思うよ。
データを抽出して、配列に格納して、print。大体この順序だし。
423nobodyさん:02/11/13 03:23 ID:???
>>421 さん >>422 さん
ありがとうございます。意味がわかりました!
抽出と配列への格納ですね。やったら出来ました。
424nobodyさん:02/11/17 21:14 ID:uOvn3njt
あるMySQLのデータベースのフィールドlDateがDate型、lTimeがTime型なんです。
これをlDate + lTime以下を条件に削除したいので
SQL文 Delete From table Where lDate < '2002-11-17' And lTime < '00:00:00' をmysql_query()で実行しますた。
でも削除されません。
エラーでてないようです。
何がいけないのでしょうか?
425nobodyさん:02/11/18 00:13 ID:IKSCnBSV
> 何がいけないのでしょうか?
あなたの頭...

時間を評価に加えたいなら、条件は次のようになるでしょ。
lDate < '2002-11-17' OR (IDdate='2002-11-17' AND lTime<'XX:XX:XX')
私ならこういうスケルトンは切らんけど。
426nobodyさん:02/11/18 18:13 ID:???
>>424
何でdatetime型を使わないんだ…?
427nobodyさん:02/11/21 03:53 ID:R8Yr+Jw9
phpとMySQLでショッピングカートを作っているんですが、注文が入った時
テーブルに(客ID、商品ID、個数)を入れます。(複数注文の場合はループで一つ一つ入れます。)

この場合、テーブルタイプはBDBとInnoDBどっちがいいでしょう?
厨な俺は今までMyISAMでロックなしでやってました…
428nobodyさん:02/11/21 06:54 ID:???
>>427
アホほど注文来るのか?
その程度の作業なら、トランザクションなんぞ要らない。
PHP側の処理で対応出来ます。
429nobodyさん:02/11/21 13:08 ID:T4lGgkT+
PHP側の処理とは?
430428:02/11/21 18:54 ID:zV2T5Gzq
>>429
ソレを考えるのがプログラミングの醍醐味では?

DBを使わない、ファイルにログを書き込むタイプの掲示板なんかのロック処理を応用する。
431427:02/11/22 16:23 ID:???
>428
ご教授ありがとうございます。
PHPで処理してみます。(注文はアホみたいにきませんが・・・)
432nobodyさん:02/11/24 21:18 ID:9k1JVlB2
日本語をDBに更新すると文字化けする・・・
433394:02/11/24 21:59 ID:OWmSQ2+X
>>432
EUC-JPとかUTF-8とかをつかってみる
434nobodyさん:02/11/24 22:41 ID:9k1JVlB2
>>433
どうしても S-JIS にしたい場合はどうすればいい?
435nobodyさん:02/11/25 06:01 ID:???
>>432
元DBのデータを温存したいなら、DB部は元の文字コードを使って、
表示の時だけSJISにすればいいのでは?
436nobodyさん:02/11/25 08:15 ID:Wgc+tEwe
レコードをdeleteすると、次にinsertした時その行にレコードが入れられてしまいますよね
実害は無いのですが気持ち悪いので何かスマートに順番に並べる方法は無いでしょうか
437bloom:02/11/25 09:16 ID:Ou4iEOdu
438nobodyさん:02/11/25 13:42 ID:JXdRZ3s0
>>435
意味がよくわかんないんだけど、だったらdelete するな、と思うのはおれだけか?
439nobodyさん:02/11/27 06:16 ID:AyxusqCI
質問です。
MySQLでデータベースに日付を入力するDATEと時間を入力するTIMEというカラムを
つくったとします。
そして、DATEには2002-11-27とTIMEには00:00:00という行と、
DATEには2002-11-27とTIMEには00:10:00という行と、
DATEには2002-11-26とTIMEには00:00:00という行が入力されたとします。

これを古い順でソートしようとすると、order by DATEとつけることになると
思うのですが、時間の順ではソートできなくなります。どうすればいいんでしょうか??

どなたかご教授ください。よろしくお願いします。
440nobodyさん:02/11/27 09:24 ID:???
基本過ぎるぜ、だんな。
ORDER BY DATE,TIME
441439:02/11/28 01:03 ID:bMROl6Cl
> 440

ああ、それでいけるんですね。手元にある本にのってなかったので、、、
ちゃんとマニュアルよんどきます。

というかDATETIME型なんてあるんですね。
勉強不足でした・・・助かりました。修行に励みます。失礼します。
442nobodyさん:02/11/28 12:31 ID:+5GONPaT
質問です。
レコードの数字部分の最小の値を得たいのです。
例えば
AB-001
AB-002
AB-003
ならばAB-004を
AB-002
AB-001
AB-100
ならばAB-100を
得るようにしたいのですが、どのようにしたらよいでしょうか?
AB-001から順番に調べていくのでしょうか?
スマートな方法があればうれしいです。
宜しくお願いします。
443nobodyさん:02/11/28 14:47 ID:???
ワケワカラン。

ABってのが入ってるのと001が入ってるフィールドは別?
同じフィールドにハイフン区切りで入ってるの?

AB-xxxって値が入ってるの?全部AB?

最小なら上の例なら001、下の例なら002じゃないの?最大の間違い?
444nobodyさん:02/11/28 15:21 ID:+5GONPaT
>>443
すいません。
日本語がわやな上に言葉がいろいろ抜け、さらに間違っています。

文字列レコード(primary keyを指定しています)
の数字部分の使用されていない最小の値を得たいのです。
例えば
AB-001
AB-002
AB-003
ならばAB-004を
AB-002
AB-001
AB-100
ならばAB-003を得たいです。
445nobodyさん:02/11/28 15:21 ID:+5GONPaT
スマートでない方法で思いつくのは
$record[] にレコードを全て取得しているとして
$prefix = "AB-"として、

for( $i = 1; $i <= count( $record ) + 1; $i++ ){
// 個数より2以上大きい数が最小となることはない
sprintf( $check_str, "%s%03d", $prefix, $i );

$check = true;
for( $j = 0; $j < count( $record ); $j++ ){
if( $record[j] == $check_str ){
$check = false;
break;
}

if( $check )
break;
}

echo $check_str;

スマートな方法があれば教えて下さい。
446nobodyさん:02/11/29 00:30 ID:???
>スマートな方法があれば教えて下さい。

テーブル設計をみなおす
447nobodyさん:02/11/29 23:10 ID:kyVi4Psy
ウェブ上からmysqlに登録できなくなったので、
調べてみると、
telnetで直接insertしようとしても、えんえん待たされる状態になりました。
同じdatabaseの他のtableにはinsertできるのですが…。
これはどのような原因が考えられますか?
448447:02/11/29 23:47 ID:kyVi4Psy
deleteも待たされてできません。
selectは出来ますが、
telnetでeucの日本語が文字化けするので
ちゃんとできているのかはいまいち分かりません。
ロックはかけてませんが、テーブルが壊れることはない、
と過去ログにはあるし…なんなんでしょう?
449nobodyさん:02/11/30 02:11 ID:???
>>447
よく解らないけどmyisamchkコマンドを試してみたら?
450447:02/11/30 02:33 ID:???
>>449
レスありがとうございます。
なんとも不可解だったのですが、
MySQLもインストールしてある/usrが
Apacheのログで100%Usedになっていたのが原因でした。
おさわがせいたしますた。
451nobodyさん:02/11/30 08:11 ID:67+5Hznc
「テメーらここで質問する前にこのサイトくらい見とけよ(w」
みたいなPHP + MySQLの初心者向けのサイト教えてください。
452nobodyさん:02/11/30 12:17 ID:jN+HZDrE
453nobodyさん:02/12/01 18:22 ID:???
Win32 + Apache + PHP + MySQL の環境で、MySQL を使う PHP スクリプトを使っておられる方っていませんか?
例えばアクセス解析スクリプトとか。
というのも、当方が使ってる解析スクリプトは Les Visiteurs なんですが、解析表示で MySQL の CPU 使用率が百パーセント近くになってしまうんです。
Win32 で MySQL をお使いの方、貴殿のマシンではどうですか?
454nobodyさん:02/12/02 15:37 ID:???
>>446
自己レスです。
とりあえずprefixはテーブルの外に出して番号だけを入れるようにしました。
で、全検索しますた。お騒がせしました。

>>453
うちもそうなります。カーソルまで固まりますね。
現状はそういうもんかと思っていますが、、
455453:02/12/03 21:32 ID:???
>>454殿
レスポンスありがとうございます。
そうですか。やはりWin32ではそうなるようですね。
PC-UNIXへの乗り換えを真剣に考えてみたいと思います。
456nobodyさん:02/12/05 00:18 ID:kQitN0HN
質問なんですが、行が何行かある場合に
whileで回して毎回selectで読みに行くようなやり方でいいんでしょうか?
もっと上手いやり方とかありませんか?
457nobodyさん:02/12/05 00:29 ID:VZIKFHpL
SELECT フィールド FROM テーブル WHERE フィールド = 'hoge'
こういうことじゃなくて?>>456
458nobodyさん:02/12/05 14:18 ID:???
こんにちは〜です!!
質問があります。
PHP とか MySQL って、EUCだと思うのですが、
全て S-JIS で組みたいんです。
どうすればできるようになるのか教えてください。
459nobodyさん:02/12/05 14:23 ID:???
勝手にやれ。
460nobodyさん:02/12/05 14:25 ID:???
>>458 2,30回死ね。
461nobodyさん:02/12/05 16:08 ID:Z0U+Oe8h
質問です。
a.phpとb.phpがあって、それぞれmysql_pconnectでMySQLに接続しているとします。

その際、a.phpの接続をb.phpでも再利用してくれるのでしょうか?
それとも、a.phpで確立した接続は次にa.phpがリクエストされた場合のみ再利用されるのでしょうか?
462nobodyさん:02/12/05 16:39 ID:???
前者(の筈)
463nobodyさん:02/12/09 01:33 ID:???
PHP+MySQL使える鯖リストみたいなのない?

相場はどのくらいよ?みんな自鯖なわけ?
464nobodyさん:02/12/09 05:46 ID:vvvONNMO
携帯用コンテンツを作っています。
携帯はEUCじゃないんで、少し気になったのですが、
MySQLに入れる文字列、S-JISで問題ないですか?
465464:02/12/09 05:53 ID:vvvONNMO
過去ログみたら、問題ありっぽいですね。
EUCにしてからDBに入れる、
取り出してからSJISに変換…というやり方でいいのでしょうか?
466nobodyさん:02/12/10 00:57 ID:ZDH4nUde
>>465
たぶん正解。あとでトラブりたくないならそれがベストでしょう。
467nobodyさん:02/12/10 21:21 ID:1xJ1WsMK
PHP最近始めました。超初心者です。
Win98にApache+PHP+MySQLをいれたのですが、
データベースのデータはDOSプロンプトからしか作成できないのでしょうか?
それと、

<?php
$link=mysql_connect("localhost","root","????");
if ($link==false) die("接続できてない");
print "接続完了!!";
mysql_close($link);
?>

このソースをWebにUPしたときは、"localhost"と"root"と"????"の場所には
何を記述すれば良いのでしょうか?
468nobodyさん:02/12/10 21:45 ID:???
     ∧∧   ミ ._ サクッ
     (   ,,)┌─┴┴─┐
     /   つ. 厨房警報 |
  〜′ /´ └─┬┬─┘
    ∪ ∪     ││ _ε3
゛゛゛'゛゛'゛゛'゛'゛゛'゛'゛゛゛゛'゛゛゛'゛゛
469nobodyさん:02/12/10 22:16 ID:nfrh3Eto
Windowsの場合、データベース操作は基本的にコマンドプロンプト(cmd.exe)上で行う。
ただ、データベース管理ソフト(PHPスクリプトではない)などを用いた場合はこの限りではない。
localhostの部分は、貴方のマシン上でデータベースが走っていれば変えなくてもいい。
rootは貴方が前もって作成した自分のユーザー名、????はそのパスワード。

ところで皆さん、今日はサボらず仕事しますたか?
470nobodyさん:02/12/10 23:29 ID:???
>ところで皆さん、今日はサボらず仕事しますたか?

まさか。一日中2ch三昧デスヨ
471nobodyさん:02/12/11 03:23 ID:wyfErbBz
今、ランキングのようなものを作っています。
カウンタでorder byしてselectしてた結果セットから、
指定した範囲のデータを取り出すにはどうすればいいのでしょうか?
472nobodyさん:02/12/11 03:53 ID:???
>>465
半角かなとか使いたかったら、UTF-8でDBに保存するという手もあるね。
473nobodyさん:02/12/11 03:54 ID:???
>>471
結果が100列出たとしたら、その中の20から29までを取り出すとか?
474nobodyさん:02/12/11 06:40 ID:???
Limit
475471:02/12/11 09:00 ID:???
>>473
そうです。
>>474
ありがとうございます。
全取得してmysql_data_seek使ってました。
SQLの段階でlimitを使えるんですね。
476質問です:02/12/11 16:44 ID:???
48時間以内に追加されたデータだけを取り出したいのですが
どのようにすればいいんでしょうか?
477nobodyさん:02/12/11 16:59 ID:???
WHERE TIME_FIELD >= '48時間前の時間';
478bloom:02/12/11 17:02 ID:tfVVditW
479質問です:02/12/11 17:02 ID:???
>>477
ありがとうございます!

TIME_FIELDはDATETIMEで「2002-12-11 17:00:00」のような感じでいいんでしょうか?
それともUNIX時間のようなものを登録したほうがいいんですか?
480nobodyさん:02/12/11 17:07 ID:???
>>479
> TIME_FIELDはDATETIMEで「2002-12-11 17:00:00」のような感じでいいんでしょうか?

うん。
481質問です:02/12/11 17:09 ID:???
>>480
ありがとうございました。
482あの〜:02/12/11 20:14 ID:ev3EQy1k
PHP+MySQLで掲示板してるんですけど、サーバー移行にあたり、どうしてもMySQLのデータの移行部分がわかりません。
簡単にデータ移行できるソフトとか方法があったら教えて欲しいのですが…
dumpとかよくわからなくて…
483nobodyさん:02/12/11 20:27 ID:???
phpMyAdmin
484nobodyさん:02/12/11 21:38 ID:???
データファイルをそのまんまコピーじゃダメかい脳?
485あの〜:02/12/12 14:14 ID:ZuG/4ZFd
nobodyさんありがとうございます。
一度csvにダウンロードして、phpMyAdmin内で「テーブルにテキストファイルの追加」ってので一応できました。
ただ、文字化けの問題だけが…
一部ですが、文字化けする文字のエスケープ処理!?が解決できれば(^0^)/なんですが…
ちなみに、元データは文字化けをしない状態にして保存されています。(\とかが付かない状態)
486nobodyさん:02/12/13 00:28 ID:???
PHPアイコン掲示板で昇格機能ついてるのを見かけたことありませんか?
487nobodyさん:02/12/13 06:10 ID:???
>>486
マルチポストうぜぇ。スレ違いだ、死ね。
488しつもんくん:02/12/13 22:47 ID:suET/Tk2
insert intoでauto_increment属性を含むフィールドのあるテーブルにレコードを
追加したとします。
その直後に、auto_incrementのフィールドに入った値を知る方法はありますか?
489nobodyさん:02/12/13 22:52 ID:???
kensakushiroyo
490nobodyさん:02/12/13 22:55 ID:???
>>488
mysql_insert_id
491nobodyさん:02/12/14 00:18 ID:???
488です。
大変助かりました。ありがとうございます。
>>489
一応検索したけど見つけることができませんでした。
insert into じゃなくてinsert で探せば良かった・・・
492nobodyさん:02/12/14 18:38 ID:ReF0iUS4
質問なのですが、テーブルの行数を得たいのですけども

$result = mysql_query("select id from test");
$num_rows = mysql_num_rows($result);

よりも、簡単な方法はありませんか?

$result = mysql_query("select count(id) from test");

で、求められるようにも思えるのですが、いまいち方法がわからないです。
最初のやり方だと、行数がふくれたときに重くなりそうな気がしますし。
493nobodyさん:02/12/14 20:25 ID:???
下のやり方なら、mysql_result($result,0,0)
でデータを取得できると思う。
ただし、やってることは同じ。軽くなりません。
494492:02/12/14 23:37 ID:???
>>493
返答ありがとうございます。勉強になりました。

とりあえず、データを挿入するときに、別の場所に挿入した行数を保存することで
対処しようかと思います。
495nobodyさん:02/12/15 03:21 ID:???
$result = mysql_query("select count(id)as n_rows from test");
みたいに、名前を付けて、
$rows = mysql_fetch_arrya( $result ) ;
$num_rows = $rows["n_rows"] ;
とできるんじゃなかったけ? (実行環境が無いので自信無し)
取得後は、
mysql_free_rusult( $result ) ;
とメモリを開放してやること。

「別の場所に挿入した行数を保存」するのは、管理が大変じゃないかな。
496nobodyさん:02/12/16 23:56 ID:???
DATETIME型の項目があって
その値の古い順に削除するにはどうすればいいですか?

$query = "DELETE FROM table_name WHERE 1 > 0 ORDER BY date_field LIMIT $cnt";

これだと文句言われるです
497496:02/12/17 00:14 ID:???
MySQLのVersionの所為ですたスマソ
498nobodyさん:02/12/17 22:46 ID:UtA/ADyw
CQ出版「PHPとMySQLで作るショッピングサイト」に掲載されている
phpdevなるものをインストールしました。

http://www.firepages.com.au/

結構楽かも。
499 :02/12/17 22:48 ID:???
500nobodyさん:02/12/17 23:01 ID:???
500get!
501nobodyさん:02/12/17 23:53 ID:???
>>498
嬉しいのは分かるがphpdevの説明ぐらいしてください。
「phpdevとは、Windowsに PHP、MySQL、Apache、 (PERL)などをインストールするパッケージです」
>>500
嬉しいのは分かるが、最後にズサーが抜けてます。
502nobodyさん:02/12/18 20:26 ID:5JJf1BHQ
外人の方が書かれたリンクカウンターのコードですが
わからない部分がありましてご教授願えたらと思い投稿させていただきます。

1 $c=mysql_query("select id from TW_click where url='$j' order by id desc limit 1");
2 $d=mysql_fetch_object($c);
3 if(is_object($d)){
4 mysql_query("update TW_click set hits=hits+1 where id={$d->id}");}
5 mysql_query("insert into TW_click (url)values('$j')");}

4行目の id={$d->id} というのは何を意味しているのでしょうか。
申し訳ありませんがよろしくお願いします。
503nobodyさん:02/12/18 21:01 ID:???
>>502
$d->$idでしょ
{}でくくってるのは墓石k
504nobodyさん:02/12/19 17:29 ID:lzLv+VhC
>>502

$d->idというのは,$dというオブジェクトのidという変数のこと。

中身は
select id from TW_click where url='$j' order by id desc limit 1
の結果。
505nobodyさん:02/12/19 18:25 ID:???
>>504
> >>502
> $d->idというのは,$dというオブジェクトのidという変数のこと。
オブジェクトと言うより、インスタンスだよね
506nobodyさん:02/12/19 22:40 ID:6CY601Q7
+-----+-------+
|名前  |持ち物 |
+-----+-------+
|A    |りんご  |
|     |バナナ |
+-----+-------+
|B    |みかん |
+-----+-------+
こういうのはどうやったらできるのでしょうか?
507nobodyさん:02/12/19 22:44 ID:???
>>506
お前マジで参考書ぐらい買えよ
508nobodyさん:02/12/19 23:41 ID:???
print<<<mona
+-----+-------+
|名前  |持ち物 |
+-----+-------+
|A    |りんご  |
|     |バナナ |
+-----+-------+
|B    |みかん |
+-----+-------+
mona;
509nobodyさん:02/12/20 01:14 ID:???
>>506
俺はAscii Art Editorってのを使ってる。簡単にできるよ。
510kodokuman:02/12/20 15:22 ID:???
http://www.matsuya-building.co.jp/testphp/backend.txt
↑上のソースはサーバーに載せてもエラーはでないのですが・・・
メール配信の方がされません!僕のは何が間違えてるかわからないんですけど、誰かわかりますか?
511nobodyさん:02/12/20 16:55 ID:???
ちゃんと見てないけど、mail関数の"From: AuthMan"がマズイんじゃないの?
メールログ見れるなら、それ見れば即解決。
512502:02/12/20 21:30 ID:???
>>503-505
ありがとうございます。
なんとなくわかったようなわからないような、ですが…。
そもそもオブジェクトの意味すら掴みかねている状態ですのでもう少し勉強してみます。
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8&sw=2
?(;´Д`)
ありがとうございました。
513504:02/12/21 17:41 ID:???
>>512
漏れもたいしてわかってないから安心しろ。
とりあえず使い方だけわかればそれでいいんではないだろうか。
514nobodyさん:02/12/24 21:38 ID:Wt8tE8W2
PHP + MySQL + Apache + Windows でやってるんすけど、特定の文字
(2バイト目に"C5") で文字化けが起きるのはどうやったら回避できるん?
515nobodyさん:02/12/24 21:52 ID:ISz3CA8u
文字コードをEUCにする
516nobodyさん:02/12/26 00:51 ID:???
>>512-513
プププ
オブジェクト指向理解していない奴がPHPに手をつけるなよw
WEBプログラミングはCGIでC言語使ってやってろw
517nobodyさん:02/12/26 02:18 ID:???
>>516
逆にPHPでオブジェクト指向勉強使用とするのも危険
518nobodyさん:02/12/26 18:38 ID:???
> オブジェクト指向理解していない奴がPHPに手をつけるなよw

???
519nobodyさん:02/12/26 21:15 ID:???
段々荒れてきたな・・

OOPがらみでデザインパターンやってる人がいた。
http://www.pat.hi-ho.ne.jp/dimension/sample/sample_class_list.shtml
まだPHPでOOPする必要に迫られたことないけど、練習くらいはしといたほうがいいかもね。

PHP+MySQLだとDreamWeaverMXが気になるけど、使った人いる?
オレ?PostgreSQL使ってる...スマソ
520nobodyさん:02/12/26 21:58 ID:???
オブジェクト指向を理解して無いと、結構トンデモコードを書きがちになるけど
それにこだわって書いてるとそれはそれで変なコードになっていく
どのみちセッションがブチ
ブチ切れ
るんだしあまり「オブジェクト」にこだわることもないかと。
セッション管理ってのは極力しなくていい作りにしたいしするべきだと思ってる。
Webページってのは、管理者の思いもよらぬところをブック
マークされるという危険を伴う諸刃の
521nobodyさん:02/12/27 00:00 ID:???
上の方でちょっとXSSの話があったけど、
magic quoteを有効にしてれば、フォームデータを
そのままSQLで流しても大丈夫ですか?
それともまだ穴がありますか?
522nobodyさん:02/12/27 09:30 ID:???
>>521
'' の中にデータを展開する分には大丈夫だろうけど、
'' の外だと magic quote は、あまり役に立たないと
思うよ。

正直、magic_quotes_gpc は off にしておいた方が
一貫して入力を扱えて楽じゃないですか?
523nobodyさん:02/12/27 20:09 ID:eZog1k3V
レンタル掲示板のようなものを作ろうと思っています。
機能的にはごくシンプルなものです。
一人50件くらいのログを記憶させるような。
こういう場合、皆様ならどうしますか?
俺は一人1ROWにしてtextに全ログを連結して保存しておこうかと
思ってるんですが、どうせDB使うならもっといい方法あるかな、とも
思うし。
どうでしょう?
524nobodyさん:02/12/27 20:26 ID:MTFRpGP1
http://homepage3.nifty.com/pawaway/
みんなココにきてくれー。
525nobodyさん:02/12/27 20:56 ID:2gbLeXIi
>>523
それじゃー、RDBMSやSQLの恩恵がまったく受けられないよ。
ある月のレスだけ取得したい場合どうする?
あるホストからの荒らしレスだけ削除フラグつけたい場合どうする?
逆に、1ROWならCSVでいいのでは?
526nobodyさん:02/12/28 01:16 ID:4WWvmFEH
>>525
そっかー
1書き込み1行にしてsqlで並び替えればいいんだね。
どうもsqlの発行を少なくしようとしてしまう癖がある。
でもphpで処理するよりMySQLでやる方が軽くて速いんだろうね。
527nobodyさん:02/12/29 22:03 ID:OOvrby/y
現在時刻をMySQLのdatetimeに書くにはどうすればいいですか?
528nobodyさん:02/12/30 09:07 ID:???
 わざわざPHPから書き込まなくてもフィールド属性をtimestampにしてみれば?
 ワンタイムで書き込みたいなら、date( "Y-m-d H:i:s" );を持たせた変数でupdateすればおーけー
529nobodyさん:02/12/30 13:40 ID:HKQQDiUV
now()関数じゃだめなの?マニュアルにいろいろ書いてあるよ
530nobodyさん:02/12/30 17:51 ID:???
ttp://babu.com/~kotori/opnsrc.php
↑ここと同じようなゲームを作ってんだけど、こんなにテーブル用意する必要あるん?
俺は1個にまとめてるんだけど。
531nobodyさん:02/12/30 18:10 ID:h3/FqmXB
>>530
必要ある
532nobodyさん:02/12/30 19:00 ID:???
533nobodyさん:02/12/31 11:25 ID:???
SQL使うメリットはあるのですか?
csv形式で保存でいいジャン。
534nobodyさん:03/01/01 00:00 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ < あけましておめでとう♪
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    く__∞,ノ
    し' し'
535nobodyさん:03/01/01 18:33 ID:???
ワイルドカードのエスケープの説明で「ワイルドカード文字として解釈される文脈で」
とあるけど、これって「LIKE」を使っているときということでいい?
これ以外のケースってありますか?
536まにゅある見ないでモノを言う:03/01/04 05:54 ID:kDPU8tAM
>>534
SQL文中に正規表現つかえなかったっけ、MySQLって。
537???:03/01/05 17:09 ID:2x+u7AZu
古いMySQLから新しいMySQLへデータ移行(サーバー自体の移行により)をしたいのですが、
「テーブルにテキストファイルの追加」から行っても、
The used command is not allowed with this MySQL version
とういうエラーが出て、上手くできません(T_T)
どなたか詳しい方、教えて下さい
538nobodyさん:03/01/05 19:37 ID:UGhIjm9v
>>537

'load_data_infile'=1(有効)
'load_data_infile'=0(無効)
らしいのでmy.cnfで1(有効)になっているか確認してみては?
539nobodyさん:03/01/06 18:14 ID:???
>>533
ビールを飲むメリットはあるのですか?
紙コップで乾杯!で、いいじゃん。
540nobodyさん:03/01/06 21:50 ID:???
厨な質問で申し訳ないんですけどInnodbでのトランザクションって

mysql_query("BEGIN") or die("Query failed");
mysql_query(SQL文) or die("Query failed");
mysql_query(SQL文) or die("Query failed");
mysql_query(SQL文) or die("Query failed");
mysql_query("COMMIT") or die("Query failed");

って感じでうまく機能しますか?
もっとスマートな方法があればご指摘いただきたいのですが・・・
541nobodyさん:03/01/06 22:11 ID:9dVyKXX8
mysql_connect()だと処理が終了したときに自動的に切断してくれるけど
きっちりmysql_close()した方がマシンの負荷は低くなる?あんまり変わらない?
542nobodyさん:03/01/07 01:00 ID:???
>>541
癖をつけておくと余計なトラブルを回避できていいかも
あんまり変わらないけど
543533:03/01/07 01:31 ID:iRkA6Fwm
>>539
えーと、>>539自体ちょっと意味がわからんが
ビールはジョッキで飲む方が紙コップで飲むより
うまく感じるってこと?

つまり、SQL使うメリットもなんとなく良さそうに見えるから?
それだけ?
544nobodyさん:03/01/07 01:59 ID:28f9Hhaj
>>543
>>539はたしかにわかりにくいな。

全自動洗濯機使うメリットってあるのですか?
二層式とかせんたく板でいいじゃん。

これでどうよ。
545nobodyさん:03/01/07 02:30 ID:???
二槽式洗濯機は洗濯と脱水とが同時(マルチスレッド)
洗濯板は目視で汚れを確認できる

とか?
546nobodyさん:03/01/07 02:31 ID:???
csvならテキストエディタでデータ編集できるし便利だよ
547nobodyさん:03/01/07 02:32 ID:???
CSV形式の利点はデータのポータビリティが優れている点だと思う。
548539:03/01/07 18:31 ID:???
いや〜 >>533 氏を「ずれとるナァ」と思ってたのさ。俺は。

全自動洗濯機使うメリットってあるのですか?
水で洗えばいいじゃん。

こんな具合にズレとる。
549nobodyさん:03/01/07 19:07 ID:JKnGPZVy
CSVにて、100万件(20項目)ぐらいのデータが楽に扱えますか。
検索のスピードは、MYSQLと同じくらいですか。
550nobodyさん:03/01/07 19:37 ID:E9xJzpX+
おいらんとこは、拡張CSV使ってます
551nobodyさん:03/01/07 21:08 ID:28f9Hhaj
データベース使って正規化したら
データ量はかなり少なくなると思われ。

あと、CSVって
100万件のデータがあって
目的の1件を探したかったら
ファイル読み込んでループでまわすの?
もしそうだとしたら
データベースのインデックスのほうが早そう。

明確な知識がなくてスマソ
552nobodyさん:03/01/07 21:42 ID:???
 いあ、まぁ>533はどうせ釣りなんだから、そんなもんにまじめに返答せんでも(苦笑
553nobodyさん:03/01/08 00:48 ID:???
>>549
うそだろー
554nobodyさん:03/01/08 00:57 ID:???
>>549
あらかじめインデックス作らせておけば
データベースにぶち込んだ方が速いに決まってるよなぁ
555nobodyさん:03/01/08 03:27 ID:hAY0g5Se
indexなしでも充分速いわけですが。
556nobodyさん:03/01/10 22:39 ID:1fouTyOy
CSVもソートしてあれば、検索は早い。
九位九ソート 挿入
557nobodyさん:03/01/10 23:39 ID:???
>>556
いや、ソートしたって線形検索じゃ遅いでしょ。
558nobodyさん:03/01/11 00:55 ID:???
>>557
クイックソートを出すだけの発想力があるなら二分探索法は速攻で思いつくでしょう。
559nobodyさん:03/01/11 05:55 ID:???
MySQLのマニュアルの読みにくさは異常
560!!:03/01/11 16:34 ID:gISEgncJ
phpMyAdminを使用して手元にあるCSVファイルをインポートしたいのですが、
phpMyAdminはエキスポートしかできないんでしょうか?
561nobodyさん:03/01/11 17:00 ID:JDeX+B7u
カンマで区切ったデータを取り込むには
「--fields-terminated-by」オプションに「,」を指定します。
カラム順にデータが記録されています。

例:カンマで区切ったデータを取り込む
$ mysqlimport --fields-terminated-by=,
--fields-optionally-enclosed-by=\" データベース名 ファイル名

562nobodyさん:03/01/11 17:11 ID:???
>>560
インポートしたいテーブルを選択して
「テーブルにテキストファイルの追加」からインポートできる。
563!!:03/01/11 17:29 ID:gISEgncJ
561さん562さん助言ありがとうございます

「テーブルに...」で実行してみたら

エラー

実行されたSQLクエリー :

LOAD DATA LOCAL INFILE 'C:\\PHP\\uploadtemp\\php4A.tmp' INTO TABLE `test` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

MySQLのメッセージ -->

The used command is not allowed with this MySQL version

って出力されてしまいました。因みにベクターで探してきた「かねやん」を
使ってインポートすると正常にインポートできてしまいます。
どこが悪いのだろう...

因みに各バージョンは昨日すべて落としてきた版です
564nobodyさん:03/01/12 01:09 ID:CRDOZqUg
565!!:03/01/12 16:11 ID:JMlfr701
564さんありがとうございました。
my.iniやmy.confにlocal-infile=1のオプションを付加しても駄目でした。
やり方が悪い?(当方windows)
しかし、3.23.49からこのような仕様になっていると言うことがわかり、
本屋で無理矢理3.23.36が収録されている本を買ってきて実行すると
何事もないようにうまくいきました。
当面の作業がうまくいきそうです。
落ち着いたらまたチャレンジしてみます。
566nobodyさん:03/01/12 16:24 ID:HvHiIRir
http://profiles.yahoo.co.jp/moekosanjp
★私とチャットしませんか?★
567nobodyさん:03/01/13 16:27 ID:???
>>566
掘るぞホゲ!
568nobodyさん:03/01/14 15:23 ID:gMRBp+il
>>549に便乗して質問なのですが

100000000(1億)のレコードから
目的の1件のレコードをとってくるのと
10000のレコードをもつ10000テーブルのなかから
目的の1件のレコードをとってくるのとでは
どちらが早いですか?
実験したかったのですが1億のレコード挿入で
断念しました。。。
(10万,100万の時点でおそろしく時間がかかったため)
569nobodyさん:03/01/14 19:12 ID:???
>>568
もう考えるまでも無く圧倒的な勢いを持って後者
インデックス次第では前者≒後者になりそうだけど
処理量はどうしようもなく必然的に大胆に前者≧後者
570568:03/01/14 20:36 ID:gMRBp+il
>>569 ありがとうございます。やっぱりそうですか。
設計的にはかなり冗長ですが(同じ構造のテーブルが多数)
やはり後者のテーブル設計を取ろうと思います。
不安だったのは、
前者
SELECT name FROM tableall WHERE id=34561234;
後者
SELECT name FROM table3456 WHERE id=1234;
としたときの後者の場合、
データベースが10000のテーブルの中から
table3456をみつけるのに時間がかかってしまうのか
どうかがわからなかったことです。
テーブルのなかのレコードを探す能力は最適化されてても
データベース内のテーブルを探す能力については
どうなのかなと。。。心配性&スキル不足ですまんです。
571nobodyさん:03/01/14 20:51 ID:???
>>569
つーか、後者の速さは(アプリ側乃至SQL文とかストアドの)ロジック次第なのでは?

>>568
つーか、圧縮するロジックを考えるのが筋だと思うよ。
# 今のままだと、1個の物理ディスクに入らないかも知らん。
# そうであれば、バスの速度などにも禿げしく依存。
ただし、再発明しないようにね。
572nobodyさん:03/01/15 06:59 ID:???
1億のレコードを持つテーブルに貼ったインデックスって
ひょっとして恐ろしくデカイのでは?
573nobodyさん:03/01/15 12:50 ID:a4fZ6czk
質問させてください。

select * from mytable;
のように全部取得したいのですが、全部だと多すぎるので、20行ずつ取得したいのです。
つまり、掲示板などでの、前20件、次20件などのようにしたいのです。

どういう命令がありますか?
574nobodyさん:03/01/15 13:22 ID:i2Ml65cz
http://www.mysql.gr.jp/jpdoc/3.23/manual.ja_Reference.html#SELECT

select * from mytable LIMIT 0,19;
select * from mytable LIMIT 20,39;
575nobodyさん:03/01/15 13:23 ID:???
どうも。
わかりました。
576山崎渉:03/01/15 13:31 ID:???
(^^)
577nobodyさん:03/01/17 23:11 ID:???
PC P2-400 128M
WIN98
Apache 1.3.27 (Win32)
PHP 4.3.0
MySQL 3.23.53
でPHPからデータベースをいぢった後に、
MySQLを終了すると2〜3分HDDが
ガリガリやってるんだけど・・・
同じような環境の人も終了に時間かかってる?
579577:03/01/17 23:17 ID:???
>>578
俺に粘着するのか?
580nobodyさん:03/01/20 14:11 ID:P5+e48Ac
ODBCつかってDBに正常にアクセスできるのに
ブラウザからPHPを使ってアクセスするとできないのは何故?
PHPは正常にインストールされています。phpinfoで確認。
581nobodyさん:03/01/20 14:13 ID:P5+e48Ac
580の補足
phpスクリプト自体は他のマシンでは正常に動作しています
582nobodyさん:03/01/20 14:29 ID:mQ4KhcQz
583nobodyさん:03/01/20 16:40 ID:???
エラー内容を書かないのは一人で解決したいという決意の表れですか?
584nobodyさん:03/01/20 19:04 ID:???
例えが拙くて恐縮なのですが、

車No, 部品No1, 部品No2, 部品No3, 部品No4, 部品No5, 部品No6
--------------------------------------------------------
車1, 部品1, 部品2, 部品3
車2, 部品1, 部品2, 部品4, 部品5
車3, 部品2, 部品3, 部品6, 部品7, 部品8, 部品9

のような、空データがあるデータベースは作れるのでしょうか。
また後から部品No7という項目を継ぎ足したい場合、
もう一度表を作り直さなければならないのでしょうか。
585nobodyさん:03/01/20 20:38 ID:???
>>584

車No, 車名
1    かろーら
2    あるてっつあ
3    ぷりうす

部品No, 車No, 部品名
1      1   純正ナビ
2      1   スペアタイヤ
3      2   純正ナビ
4      2   スペアタイヤ
5      3   純正ナビ
6      3   スペアタイヤ

正規化すれば部品は増やし放題。
586580:03/01/21 15:32 ID:GpjCCUGl
すいません。エラーの内容が抜けていました。

Warning: Supplied argument is not a valid MySQL result resource in
c:\ddd\sample.php on line XX
このようなエラーがでます。
587nobodyさん:03/01/21 16:08 ID:RteUDGxD
テーブル結合でusingを使えるのは1:1の場合に限られるのでしょうか?
例えばテーブルAをテーブルB,Cと結合する際、
上の例はOKなのに、下の例は
ERROR 1054: Unknown column 'B.f2' in 'on clause'となってしまうのです。

select f1_name , f2_name from A
left join B on A.f1 = B.f1
left join C on A.f2 = C.f2;

select f1_name , f2_name from A
left join B using (f1)
left join C using (f2);
588nobodyさん:03/01/22 00:39 ID:skWjKRLA
<FORM action="">
開始年を選んで下さい。
<select name="year_s">
<option value="1994">1994</option>
<option value="1995">1995</option>
で選択した値が、$year_sに入らないのですが・・・
しかし、同じファイルで動作するマシンもあるので困っています。
(何故か $year_sに正常に入っている)
589nobodyさん:03/01/22 00:51 ID:8E8iZdEe
>>588
それぞれのマシンに入っているPHPのバージョンが違う。
590nobodyさん:03/01/22 00:59 ID:???
>>588
古い仕様です。今は$HTTP_GET_VARS["year_s"]とか$_GET["year_s"]とかに入ってます。
591588:03/01/22 01:35 ID:skWjKRLA
ありがとうございました。
PHPの動作は確認していましたが....
助かりました。
592nobodyさん:03/01/22 18:23 ID:4bAfvvWr
MySQL 3.23.47 で
create table test (references INT);
とやると必ず文法ミスと言われるのですがなぜでしょうか?
create table test (reference INT);
create table test (referencesa INT);
もとおるのに、referencesだけだめだといわれます。
referencesという予約語があるというわけでもなさそうなのですが。
誰か教えてください。
593hmk:03/01/22 18:40 ID:skROudWD
>>592
予約語だからつかえないんだらうが!
現時点で実装されていなくとも、将来的に機能が追加されることを見越して、予約語にすることはよくあることです。
594hmk:03/01/22 18:43 ID:???
>>592
追記。ちなみにreferencesは、外部キーを定義するときに使うぞ。
595nobodyさん:03/01/23 12:44 ID:???
587です。レス気長に待ってますのでわかる人いたらお願い。
596nobodyさん:03/01/23 22:54 ID:???
なんかMySQLはデータがこわれるこわれると評判ですが、
読み書きのクエリーが衝突すると正しく読めない、なんてことはあるんでしょうか?

| 1 | 2 | 3 | 4 | をSELECTしようとしたとき、別のクエリーが
| 5 | 6 | 7 | 8 | とUPDATEしようとしたせいで、SELECTの結果が
| 1 | 2 | 7 | 8 | になった、みたいな。
597名無シネマさん :03/01/24 00:26 ID:vSlgsqBv
ロック、トランザクションとだけ言っておくよ・・・(ワラ
598nobodyさん:03/01/24 08:32 ID:???
>>597
いや、それは関係ないだろ。
599nobodyさん:03/01/24 10:13 ID:???
>>596
MySQLは、読み書きのクエリーが衝突しても、そういう結果にはならない。
そもそも「MySQLはデータがこわれるこわれると評判」って、何処の評判よ?
600nobodyさん:03/01/24 12:21 ID:???
多分、壊れるっていってる人は
mySQLはリレーショナルデータベースだという幻想を持ったまま
操作してるんだろうな。
601nobodyさん:03/01/24 16:25 ID:nJxMRNdQ
textとvarcharって、最大バイト数が違うだけで
内部的には同じように処理されるような気がするんですが、
どうなんでしょう?
だったら面倒くさいからほとんどtextでいいのでは?と思うんですが。
602vvv:03/01/24 16:37 ID:8KdGKoGc
http://jsweb.muvc.net/index.html
 ★こんなサイト見つけました★
603nobodyさん:03/01/24 16:41 ID:3x1kxIvh
604nobodyさん:03/01/24 17:57 ID:60c9RQvz
Text型は
Indexが持てない
デフォルト値を持てない
ORDER BY やGROUP BY で並び替えるときSubstringなんかを使って
固定長に直す必要があったりします
605601:03/01/25 04:29 ID:???
>>604
やっぱりvarcharの方がパフォーマンスは
良くなるんですね。
ありがとうございました。
606nobodyさん:03/01/26 22:33 ID:oI7yQ6PH
PHP+MySQLの安いレンタル鯖探してるんだけどなかなかいいところが
無い。みんなどこの使ってるの?おすすめのところあったら教えて。
テスト稼動なのでサブドメイン、共有鯖
でも勿論OK。月1000円くらいまで。
607nobodyさん:03/01/26 23:07 ID:???
>>606
スレ違いというか板違い
608nobodyさん:03/01/27 00:07 ID:???
>>606
板違いだが、マジレス。
1000円以内で考えるなら、それなりに自分の英語力を使うこと。
無料でもよいなら、xreaをキーワードに色々調べてみな。
あとは適切な板に逝ってくれ。
609nobodyさん:03/01/27 17:21 ID:Pf9TSSSi
>>600
MySQLってリレーショナルデータベースじゃないんですか? 知らなかった・・・。
Oracleしか使ったことないから同じような感覚でやってたら何か痛い目にあいますか?
610nobodyさん:03/01/27 17:49 ID:???
壊れる
611nobodyさん:03/01/27 18:18 ID:???
うっきょーーーーー!
612nobodyさん:03/01/27 18:20 ID:???
Oracleに依存したSQLを書いてると辛いだろうなぁ。
てかOracleのwhereの後ろは反則だよな(w
613nobodyさん:03/01/27 18:34 ID:???
MySQLでサブクエリ使えなくて困ったことあり。
oracleでは使えていたのに。
614nobodyさん:03/01/27 20:58 ID:???
MySQL Adds Subselects, Upgrades Performance and Security
http://www.mysql.com/press/release_2003_05.html
615nobodyさん:03/01/27 22:50 ID:???
>>606
rocket3
616jeek:03/01/30 03:02 ID:WNym3cfz
ttp://nis.sppd.ne.jp/
この携帯ショッピングサイト、php で書かれているんですけど
非常に便利に使えます。
これは既存のスクリプトなのでしょうか、どなたかご存知です?
それとも、オリジナルかなぁ。
617nobodyさん:03/01/30 05:50 ID:p/wgMSmR
サイトの更新情報をMySQLで管理しています。
以下の条件を満たすSELECT文を書きたいのですが、考えつきません。
1.現在から1ヶ月以内の更新情報を2つまで表示する。
2.ただし、1ヶ月以内に更新がなければ、さかのぼって最新の1つだけ表示する。

1.の条件までは書けるのですが、2.をどう書けばよいのか、どうか教えてください。
select * from table where hizuke > now() - interval 1 month limit 2;

ちなみに、テーブルは次のような構成です。
ID, 日付, 新着種別, ページタイトル, URL, 詳細, 表示の可否
618nobodyさん:03/01/30 06:56 ID:YNBbhRPJ
http://www6.ocn.ne.jp/~endou/index2.html
      ★こんなサイト見つけました★
619gn355my0:03/01/30 11:09 ID:???
>>617
一つのSQLで↑にぴったりマッチは難しいんじゃない?
それより最初から三件分取得しておいてアプリで制御した方が
早いと思う。
620nobodyさん:03/01/30 13:45 ID:???
>>617
1のSQLを発行して、取得できなかった場合(レコードが無い場合)は
最新の1件だけを取ってくるようなSQLを発行する、というので
いいんじゃないの?
621nobodyさん:03/01/30 18:11 ID:0RBKBbdX
質問です。
Win2K+Apache1.3+PHP4+MySQLという組み合わせで使用しようとしているのですが、
WinMySQLadminでDatabasesを見ると
コンピュータ名
      |-database1
      |-database2
となっていますよね。
このdatabase1とかの部分を増やす(?)にはどうすれば良いのでしょうか?
今は手作業でディレクトリを作成していますが、これをPHPでやりたくて…。
解説サイトを見てもこのdatabase1や2は既に存在しているのが前提の話ばかりで。

もう一つ、それとは別の質問なのですが、
MySQLのアカウント(?)を増やすにはどうすれば良いのでしょうか?
今は一組のuserとpassしか作っていませんが、これを増やしたいのです。
622nobodyさん:03/01/30 18:39 ID:???
>> 621
<script language="php">
$link = mysql_connect("localhost", "user", "passward")
or die("Could not connect");
mysql_select_db("test") or die("Could not select database");
$query = "CREATE TABLE my_table (id INT, name CHAR(20))";
$result = mysql_query($query) or die("Query failed");
</script>

こんなんで、tableは作れる
SQLの本買ってきなはれ
623nobodyさん:03/01/30 18:39 ID:???
>>617
IF
624nobodyさん:03/01/30 18:42 ID:???
VineでMySQL入れようとしたがmysqladminが無かった。
rpm -qpl MySQL-3.23.55-1.i386.rpmで見てみるとmysqladmin無いみたいなんだけど…
このパッケージだけじゃ駄目なんだっけ?
625nobodyさん:03/01/30 21:28 ID:???
>>621
データベースはコンソール(ドス窓)から手動で作らにゃならん。
って、本当は知ってるんでしょ?
アカウントも然り。だけんがこれに関してはいろんなツールでできる。
626617:03/01/30 21:48 ID:???
すみません自己解決です。last_insert_id()を使うことでできました。
select * from table where hizuke > now() - interval 1 month or id = last_insert_id() limit 2;
627nobodyさん:03/01/30 22:26 ID:???
>>622
ありがとうございます。

>>625
いえ全く知りませんでした。
と言う事はいわゆるレンタルスペースで複数作ってもらう場合は、
そこの管理人に頼まないとダメなのですか?
#>>622のような方法もあるようですが。
628nobodyさん:03/01/30 22:28 ID:???
>複数作ってもらう場合
アカウントではなくてデータベースの方です。
629:03/01/31 02:41 ID:Nn5kYoP6
権限があれば
CREATE DATABASE hogehoge
のクエリで作れるけど、管理できなくなるから、
レンタルスペースで権限は与えんでしょ。
630nobodyさん:03/01/31 03:01 ID:???
そうですか…ということは普通は一つのアカウントに対して一つのデータベースなのですか?

アカウント
    |-Forum
    |-Chat1
    |-Chat2

とかいう風にしたいのですが、無理なのかなー…。
631nobodyさん:03/01/31 09:35 ID:???
>>627
てか、あなたが telnet とか ssh とか
tcsh とか bash を使えるようになってから。
タバコはハタチになってから。
話はそれからだ。
632nobodyさん:03/01/31 11:07 ID:???
phpmyadmin使ってミソ。
まー訳わからんなら弄ってみるが吉。
そうすりゃちったぁ何か収穫があるでせう。
がんばりーや。
633nobodyさん:03/01/31 11:15 ID:???
>>630
かねやんMySQLAdmin
ttp://www.mmdb.net/m_kaneko/
phpMyAdmin
ttp://www.trustbee.com/phpMyAdmin-jp/
なんかを使ってミソ。
まー訳わからんならとりあえず弄ってみるが吉。
そうすりゃちったぁ何か収穫があるでせう。
がんばりーや。
634633:03/01/31 11:17 ID:???
ぎょえ!
カキコ失敗したと思た>>632がちゃんとカキコされちってた。
逝ってきまつ。
635617:03/01/31 14:05 ID:???
last_insert_id()の使い方を間違えていたようです。
これって、insertしたセッションの最中じゃないとダメなのですね。
636nobodyさん:03/02/02 00:57 ID:2yDn27Vr
PHP+MySQLの勉強をする意味で、
ブラウザ上で、MySQLを管理できるアプリの作成を考えています。
管理といっても、

@MySQLのユーザー、パスワードを受付て、DBに接続。
Ashow databasesの結果を一覧表示。
かつ、databaseの新規作成や、削除、選択が可能。
BAで選択したdbでのshow tablesの結果を一覧で表示。
かつ、tableの新規作成や、削除、選択が可能。
Cselect * from 「Bで選択したtable」の結果を一覧で表示。
かつ、データの作成や、削除、更新が可能。

という程度のものを考えているのですが、
上記Aのshow databasesの結果を取得する関数がわからず、つまづいています。
PHPマニュアルのMySQLサーバー関数のところを見たのですが、
それらしきものが見当たりませんでした。ご存知の方、お教えください。
637nobodyさん:03/02/02 01:19 ID:gRrRgtZT
>>636
phpMyAdminはいれてる?参考になると思う。
(というか仕様が似すぎてて作るのやめるかもねw)
show databasesの結果取得はわからん。
できないからphpMyAdminも実装してないのかもね。
638nobodyさん:03/02/02 01:32 ID:2yDn27Vr
>>637
phpMyAdminの存在すら知りませんでした。
早速、DLして参考にしたいと思います。
ありがとうございました。
639nobodyさん:03/02/02 02:46 ID:GvAm8HhI
便乗っぽいですが、PHPを使ってWeb上から
mysqldumpをかけることはできないのでしょうか。
640:03/02/02 17:22 ID:eQAjYeC3
>>639
できるよ。フツーに system で呼び出せば OK。
--
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/
641nobodyさん:03/02/02 17:25 ID:???
642nobodyさん:03/02/02 20:22 ID:???
Monster | Item
-----------------------------
Mob1   | hoge1, hoge2, hoge3
Mob2   | hoge1, hoge3

と、

Monster | Item1 | Item2 | Item3
-------------------------------
Mob1   | hoge1 | hoge2 | hoge3
Mob2   | hoge1 | hoge3 |

ってどちらの形式の方が良さそうですか?
Item の部分は増えたり減ったりして書き直しを頻繁にするので前者の方が楽なのかな?
後者だと上の例でいえば Mob3 が hoge1〜hoge4 まで持っていた場合、
Item4 を追加しなくてはならないので何というか横に長くなりそうだなあとか…。
643gn355my0:03/02/02 21:08 ID:???
>>642
ネタかな?

普通は

Monster | Item
-----------------------------
Mob1   | hoge1
Mob1   | hoge2
Mob1   | hoge3
Mob2   | hoge1
Mob2   | hoge3

だと思う。

完成したら公開よろしくね!
644639:03/02/03 00:13 ID:4TYvio9L
>640 ありがとうございます。一度はあきらめていました。しかし。

$q = 'mysqldump --password=PASS -u USER DB > DB.sql';
system($q);
上記をPHPで実行してもバックアップが成功しませんでした。
まったく同じコマンド($q)をTELNETで実行すればうまくいくのですが…。
645nobodyさん:03/02/03 02:02 ID:???
>>643
>>642とは別人だけど、色々なデータを纏めたい時ってどうするの?

Monster | Item | Gold | EXP

とかいう風に分かれているとき、
Itemのために何行も書くとGoldやEXPのところが重複しない?
似たようなことやろうと思ってるんだけど、DBは初めてなのでそのあたりの事がさっぱり…。
646nobodyさん:03/02/03 02:02 ID:jEwc5dws
>>644
検証してないので適当に答えてみるテスト。
$q = 'mysqldump --password=PASS -u USER DB > DB.sql';
system($q);

$q = '/usr/local/mysql/bin/mysqldump --password=PASS -u USER DB > /home/2channeler/DB.sql';
system($q);
647nobodyさん:03/02/03 02:07 ID:jEwc5dws
>>645
そこらへんは 1対1 か 1対多 か 多対多 で変わってくる。

MonsterNo | Monster | Gold | EXP
1 スライム 2 1
2 ドラキー 4 3

MonsterNo | ItemNo
1 1
2 1
2 2
2 3

ItemNo | Item
1 やくそう
2 かわのふく
3 ロトのつるぎ
648nobodyさん:03/02/03 02:10 ID:???
すいません。書き直し。

MonsterNo | Monster | Gold | EXP
1         スライム   2    1
2         ドラキー   4    3

MonsterNo | ItemNo
1         1
2         1
2         2
2         3

ItemNo | Item
1      やくそう
2      かわのふく
3      ロトのつるぎ
649かわのふく→ぬののふく?:03/02/03 02:15 ID:???
なんと。ドラキーがロトのつるぎを持っていたとは。。
650nobodyさん:03/02/03 02:25 ID:???
なるほど、参考にしてやってみます。
651639:03/02/03 07:06 ID:4TYvio9L
>646 ありがとうございます。以下で試しましたがダメですた。
$q = '/usr/local/bin/mysqldump --password=PASS -u USER DB > /home/USER/DB.sql';
system($q);

なお、TELNETで以下のようなパスを得ました。
% which mysqldump
/usr/local/bin/mysqldump

レンタルサーバー会社によれば、ユーザーディレクトリは以下です。
/home/USER/
652nobodyさん:03/02/04 02:21 ID:zZmUIE3R
なんでphpMyAdmin入れないの?
653nobodyさん:03/02/04 17:15 ID:jR3/RqTl
PHP+MYSQLでひらがなでDBから検索するページを作ったのですが、
一部の文字が条件と一致していないのに出てしまいます。

これってどういうことなんでしょうか?
654nobodyさん:03/02/04 18:02 ID:???
MySQLはそれで合ってるって思ってるんだよ。
php.iniで指定してる文字コードとMySQLで使ってる文字コードと
一部の文字と条件を調べてみんしゃい。
655639:03/02/04 19:45 ID:A1NhCJKb
バックアップとるためだけにphpMyAdmin使うのはちょっと…
すみません、レンタルサーバー会社にも問い合わせてみます。

>653
わたしも同様の現象を体験しています。
>654のいうとおりで、特に文字数が少ない場合、
文字コードが一致する偶然が起きやすくなります。
わたしはそれほど気にならないのであきらめていますが、
いい対処法はあるのでしょうか。
656nobodyさん:03/02/05 09:07 ID:???
>>653
1.文字コードはEUCを使う。
/etc/my.cnf の中に
[mysqld]
default-character-set=ujis

2.バイナリ比較する
WHERE BINARY name = 'あ'
657nobodyさん:03/02/05 16:51 ID:lVHnu0B4
>>656
携帯でも検索かけて表示できるページにしたいのです。
SJISでは無理なのでしょうか?
PHPで直そうと思ったのですが、上手くいかないので
658639:03/02/05 18:43 ID:rzvQR9Wx
内部的な処理はすべてEUCで行って、表示の時だけSJISに変換すればいいですよ。
$moji = mb_convert_encoding($moji,'SJIS','auto');
659nobodyさん:03/02/05 20:56 ID:???
MySQL は SJIS にも対応しております。
お使いのバージョンでは分かりませんけど。
660nobodyさん:03/02/05 21:19 ID:iZbItlvM
my.iniの設定をしっかりとすればSJISでも大丈夫。

[mysqld]
default-character-set=sjis

[mysqld]
default-character-set=sjis
661nobodyさん:03/02/05 21:38 ID:???
激しく既出だったらスマソ

mysql_fetch_array(): supplied argument is not a valid MySQL result resource in pagename on line xx

どうすればなおりますか?
662nobodyさん:03/02/05 22:03 ID:???
あんさんがわてにくれはったレザルトリソース?とかゆーやつが変やねん
ってゆってはります。
きちんとMySQLにコネクトできてないのに結果をせっかちに要求したか
ぜんぜん関係ない変数を渡してはりませんか?
663nobodyさん:03/02/05 22:23 ID:???
PHP絡んでないのでスレ違いなのかもしれませんが他に見つからないので…
ゲームやっている人ならわかると思いますが、下の例は経験値表です。

このような表で、BaseEXPはLv51以上も数値があるがJobEXPは50までしかない場合、
BaseEXPとJobEXPでテーブルを分けるか、空いた部分は全てNULLをいれて置くか、
設計(というほど大したものではないけど…)としてはどちらの方が良いでしょうか?

Lv | BaseEXP | JobEXP
-----------------------
2 |   1   | 1
3 |   4   | 2
...
51|  555   | NULL
664nobodyさん:03/02/05 22:26 ID:???
>>663
なんか日本語がバグってるぞ。
665nobodyさん:03/02/06 00:10 ID:???
>>663
NULLでいいんじゃない?
どっちでも大差なさそうだし
テーブル1コ少ないほうが管理がラク。
666gn355my0:03/02/06 00:20 ID:???
つーか、DBにするほどのもんか?
何に使うのか問い詰めてもいい?
667nobodyさん:03/02/06 01:19 ID:???
なるほど…ならとりあえず現状のままで。

>>666
とあるゲームのデータベースでも作ってみようかなーと。
丁度DBに興味湧いてきたところなので、勉強がてらに。
で先に書いたようなテーブル作っている時にふとこういうやり方ってどうなのかな?と疑問に思ったわけなのです。
668gn355my0:03/02/06 02:01 ID:???
>>667
いや、それはわかる。ただいま巻き戻り中のやつやろ?
じゃなくてそれを何に使うのかなと思って。
ほぼ100%参照だけだし、データ量もそれほどないし。
まぁ勉強がてらということだし口を出すこっちゃないやね。
669nobodyさん:03/02/06 03:44 ID:???
んー、別に世の中に公表するとかそういうのではないのですよね。
勉強というか学習と言うか、ちょっとやってみたいなーとかいう風に考えてるだけなのであまり深いツッコミは何とも。
それにまあ、利便性とか実用性とかではなくて、
DB使ってデータ管理するのも面白そうだなーとかそういう単純なノリも多分にあったりします。
言い方は悪いかもしれませんがオモチャ扱っているような感じ。
#どうせローカルだし

そちらの言うとおりデータは殆ど参照しかしないから、
データを読むと言う事だけを考えれば実用性だけならHTMLを使ってテーブルやリスト使っても十分だし、
PerlとかPHPとかはたまたJavaScriptで計算機組むにしても、
例えばCSV形式のファイルでも一つ用意すればそれはそれで良いと言うのは承知しているつもりです。

まあ、そういうわけなのです。
670gn355my0:03/02/06 09:17 ID:???
>>669
あ、ごめんごめん。責めたりしたわけではないです。
問い詰めるという2ちゃん的表現がよくなかったかな。
単に何か面白いことやってくれるのかなー
便利そうなんだったら漏れも使わせてもらおうかなー
と思っただけっす。オモチャ上等だと思いますよ。
というわけでスレ汚しスマソ
671nobodyさん:03/02/06 11:49 ID:???
でも、DBつかうと絞り込み検索とか出来て楽なんじゃないかな〜とか思ってみたり

ところで、PHP質問スレッドの7は?
672nobodyさん:03/02/06 17:00 ID:K8RgyZce
postgresの場合、
field01〜03が'猿'を含むレコードを選択
select * from Sample where field01 || field02 || file03 ~ '猿'
でできますが、
MySQLで同じ事をするにはどうすればいいのでつか?
673nobodyさん:03/02/06 19:39 ID:kbkaq7Bp
auto_incrementで主キーを自動的に振っているのですが、
今新たにデータを挿入したいとして、そこに振られる主キーを取得する
いい方法はあるでしょうか?
674nobodyさん:03/02/06 22:35 ID:???
>>673
mysql_insert_id() じゃダメかのぉ
675nobodyさん:03/02/07 09:34 ID:???
>>674
多謝
676nobodyさん:03/02/07 23:21 ID:???
ERROR 1006: Can't create database 'hoge_db''. (errno: 13)

って何のエラー?
rootでやってるんだけどデータベース作れない…。
677nobodyさん:03/02/07 23:21 ID:qy2BS4yt
あげ忘れ
678676:03/02/07 23:25 ID:???
ゴメソ。パーミッションの問題だった…。逝ってきます。
679daad:03/02/07 23:53 ID:???
680nobodyさん:03/02/08 16:39 ID:7Sg+8jhN
.
.
.

$sql = "SELECT * FROM test_tbl ORDER BY id DESC";
$res = mysql_query($sql, $conn) or die("データ抽出エラー");

while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td><font size=-1>".$row["g_id"]."</font></td>";
echo "<td><font size=-1>".$row["g_goods"]."</font></td>";
echo "</tr>";
}
.
.
.

でやってしまうと、DBに登録された順序で表示されてしまいます。
表示する前にMyspl抽出したデータ"g_id"を昇順 or 降順でソートしてやりたいのですが...
sort rsort ksort krsortは配列のみに有効でしょうか? このケースでも有効ならどのようにソートしてやればよいでしょうか?

もしくはMysplの関数でソートできるものがありますか?
ご教示願います。

Win2000 PHP 4.2.2 Mysql3.23.51
681nobodyさん:03/02/08 16:42 ID:CaCRikEO
682nobodyさん:03/02/08 17:05 ID:???
>>680
ORDER BY id DESC
683nobodyさん:03/02/08 23:27 ID:???
>>680
ORDER BY g_id [A|DE]SC
684nobodyさん:03/02/09 21:29 ID:JGZZ388l
ミッション・クリティカルって、どういう意味?
685nobodyさん:03/02/09 21:35 ID:???
>>684
なお、失敗は許されない。
686nobodyさん:03/02/10 19:54 ID:???
「なお」?
687nobodyさん:03/02/10 21:01 ID:???
>>686
当局は一切関知しないからそのつもりで。
688nobodyさん:03/02/10 21:56 ID:???
Σ(゚Д゚;;;)
689nobodyさん:03/02/10 23:11 ID:???
>>688
なお、このテープは自動的に消滅する。
690nobodyさん:03/02/11 02:01 ID:???
         .┌┐
        / /
      ./ / i
      | ( ゚Д゚) <・・・・・・・・・
      |(ノi  |)
      |  i  i
      \_ヽ_,ゝ
        U" U
691nobodyさん:03/02/11 02:09 ID:???
 おまいら、一体歳いくつなんだ(笑)
692nobodyさん:03/02/12 12:16 ID:???
バイオミック・ジェミーのモノマネ! とかいって
スローモーションで走ってた世代
693nobodyさん:03/02/12 15:04 ID:???
知らねー!
694nobodyさん:03/02/12 15:40 ID:???
漏れはムーンウォークだな。。
695nobodyさん:03/02/12 22:59 ID:???
うーパールーパー見たことがあります。
696nobodyさん:03/02/13 00:00 ID:ZKwcH9W1
上の方でMySQLはリレーショナルデータベースではないみたいな話あったのですが、どのくらいの事するとまずいんでしょうか?
表を5個くらい並べてSELECTかけるとかは問題ないでしょうか?
697nobodyさん:03/02/13 00:46 ID:???
>>696
SELECTだけなら問題おきない。

モナーの口座       ギコ猫の口座

100000→ギコ猫に     100000
20000振込み
残額80000にUPDATE
             ギコ猫の口座の
             残額を120000に増やす
             UPDATEしたらネットワークに障害!
結果

残額80000        残額100000
698nobodyさん:03/02/13 01:56 ID:???
>>697
なるほどほど。トランザクション処理ができないってことですか。
感謝です。
699nobodyさん:03/02/16 20:51 ID:Ldn1JJQS
都合により、項目に文字型で数値が入っている場合、これを数値の時と
同じように並び替える方法はありませんか?
700nobodyさん:03/02/18 23:02 ID:???
701nobodyさん:03/02/19 05:38 ID:???
>>699
select * from テーブル名 order by LPAD(カラム名,最大桁数,'0');
702699:03/02/19 13:29 ID:9sqM4pcc
>>701
ありがとうございました。うまく行きました。
>>700
ちゃんと買って勉強します
703nobodyさん:03/02/19 13:36 ID:???
>>702
うそつき。
704nobodyさん:03/02/21 21:09 ID:Opy86l2a
>>698

MySQLでもトランザクションは使えますよ。
705nobodyさん:03/02/21 21:38 ID:???
MyISAM以外を使うんだったら、MySQLにする価値は無いと思うんだけど・・
706nobodyさん:03/02/23 02:32 ID:KM+rMdK5
MySQLはじめました
707nobodyさん:03/02/23 02:34 ID:???
アクセスアップ実験中です。
http://www.geocities.co.jp/Playtown-Domino/8380/
こんな貧弱なコンテンツで
1年でどれほどのアクセスがあるのか。
どうか皆さん、協力してください。
また、これをコピーしてそこらへんに張り付けまくってください。
708nobodyさん:03/02/23 14:48 ID:???
>>706
おっ春だねぃ
709nobody:03/02/25 10:44 ID:???
706です。
簡単なDLカウンタ書けました。
動いた時は感動しました!
今日から掲示板をDB化しながら
更にDBの勉強をしていきます!
710nobodyさん:03/02/26 09:01 ID:???
up
711bloom:03/02/26 09:05 ID:LK+WeUiO
712nobodyさん:03/02/26 11:04 ID:???
>709
 かん゛はれ〜
713nobody:03/03/02 18:05 ID:???
MySQL3.23.55ですが、
例えば↓のテーブルがあって
+---+--+-----+
|uid|no|title|
+---+--+-----+
| 1| 1| 1-1|
| 1| 2| 1-2|
| 1| 3| 1-3|
| 2| 1| 2-1|
| 2| 2| 2-2|
+---+--+-----+
このテーブルからnoが最大値のuid別レコードを取るには?
望む結果↓
+---+--+-----+
|uid|no|title|
+---+--+-----+
| 1| 3| 1-3|
| 2| 2| 2-2|
+---+--+-----+
SELECT uid,MAX(no),title FROM テーブル名 GROUP BY uid;
ってやると↓のようになってしまいます。。。
+---+--+-----+
|uid|no|title|
+---+--+-----+
| 1| 3| 1-1|
| 2| 2| 2-1|
+---+--+-----+
titleはnoが最大値のが欲しいんですが、、、
なにかアドバイスを。。。
714nobodyさん:03/03/02 19:09 ID:???
SELECT uid,MAX(no),title FROM テーブル名 GROUP BY uid having no=MAX(no);
できなかったらごめん。サブクエリー使えれば一発なのになぁ
715nobody:03/03/02 19:33 ID:???
713です。
ERROR 1054: Unknown column 'no' in 'having clause'
って出ました。
サブクエリー使えないとなると、
SELECT文1つでやるのは無理っぽいですかね。。。
716nobodyさん:03/03/03 00:57 ID:QgOKxjn5
初めて投稿させていただきます。

PHPとSQLが必要なデータベースを、サイトに設定しようと思っているのですが、
その際、ホスティング業者さんに確認又は依頼すべき点は、なにがあるでしょうか?

某Yahooで回答いただけなかったので、こちらで質問させていただきました。
板汚し、失礼致しました。
717nobodyさん:03/03/03 01:39 ID:???
>板汚し、失礼致しました。

わかってるなら来ないでくださいよ・・・
718nobodyさん:03/03/04 02:51 ID:???
>>716
質問の意味がいまいちよくわからんが、
PHPとMySQLが使いたいなら、使えるかどうか確認すりゃいいんじゃないの。
719ただいま仕事中:03/03/06 04:19 ID:cPlNSv+N
>>713
SELECT * FROM テーブル名 ORDER BY no DESC 0,1;

これで望む結果の一行目(no=3)がでるはず。でも、

>このテーブルからnoが最大値のuid別レコードを取るには?
>望む結果↓
>+---+--+-----+
>|uid|no|title|
>+---+--+-----+
>| 1| 3| 1-3|
>| 2| 2| 2-2|
>+---+--+-----+

これ見ると、noが最大値(no=3)ではない(no=2)が出力されてるけど、
no=2も必要なの?
720ただいま仕事中:03/03/06 04:23 ID:cPlNSv+N
SELECT * FROM テーブル名 ORDER BY no DESC LIMIT 0,1;
LIMITが抜けてました....ネムイ
721713:03/03/06 09:24 ID:???
おはよーございます。
uid毎にnoが最大値のものが欲しかったものでして。。。
uidが1でnoが最大値のtitle、
uidが2でnoが最大値のtitle
| |
uidがxxでnoが最大値のtitle…以下uidの分だけ続く

まずuidがいくつあるか(同じuidを除いて)調べて、
それからuid毎に720さんのSELECTかまさないと
いけないみたいですね。
がんばろっ
722ただいま仕事中:03/03/06 13:53 ID:i/SuKWBs
ども。これでどうですか?
SELECT uid,MAX(no),title FROM テーブル名 GROUP BY uid ORDER BY uid
723 :03/03/06 13:54 ID:???
sagetokimasu
724713:03/03/06 18:02 ID:???
えと、それだとnoに対応したtitleが得られません。
no毎にtitleが違うんです(書いてませんでしたが(汗))

$sql = "SELECT DISTINCT uid FROM テーブル名";
$idrow = mysql_query($sql, $link);
while ($idres = mysql_fetch_array($idrow)) {
 $sql = "SELECT * FROM テーブル名 WHERE uid=${idres['uid']} ORDER BY no DESC LIMIT 0,1";
 $row = mysql_query($sql,$link);
$res = mysql_fetch_array($row);
 echo $res['uid'] . $res['no'] . $res['title'] . "\n";
}
みたいな感じで解決しました。
アドバイス下さった方々ありがとーございましたー
725nobodyさん:03/03/06 21:23 ID:???
MySQL Studioの日本語版やっと出たね
板違いかもしれないけどMySQLって事で

http://japan.mysqlstudio.com/
726nobodyさん:03/03/06 21:45 ID:???
>>725
なんかこのサイト日本語が変・・・
727725:03/03/06 21:57 ID:???
さっきDLしてみたんだけどDB内の日本語が化けてる
もしかしてインターフェースを日本語にしただけ?
728nobodyさん:03/03/06 22:54 ID:???
         .┌┐
        / /
      ./ / i
      | ( ゚Д゚) <27歳ですか?27歳より年上ですか?年下ですか?
      |(ノi  |)
      |  i  i
      \_ヽ_,ゝ
        U" U
729地獄狂:03/03/09 16:33 ID:???
http://pc.2ch.net/test/read.cgi/unix/955533785/893
から移動してきました。
***
PHP+MySQLで2ch型の掲示板と作ろうと思っています。
最初、ひとつのテーブルに全てのスレの書き込みをまとめようかと思ったの
ですが、それでは遅くなるのではと思いました。
そこで、一つのテーブルに一つのスレの書き込みを格納して、
スレが新しくたつたびにテーブルを追加するという方法にしようかと思うの
ですが、これで問題ないでしょうか?
文章下手でもうしわけないのですが、おねがいします。
**
です。
730地獄狂:03/03/09 16:47 ID:PO+D9jd5
質問なのにsageてた。。。
731nobodyさん:03/03/09 16:53 ID:???
>>729
ウワサの小泉さんですか?
732地獄狂:03/03/09 16:58 ID:PO+D9jd5
>>731
えっ??
どういう意味?
733nobodyさん:03/03/09 16:59 ID:???
なんだ小泉か。。。
734地獄狂:03/03/09 17:10 ID:PO+D9jd5
???
わけわからん
735nobodyさん:03/03/09 20:40 ID:???
>>729
どれくらいのアクセスがある掲示板を想定しているか判らないけど、
普通は問題にならない。
おそらく、テーブルを分けた方が遅くなる。
736nobodyさん:03/03/09 21:27 ID:???
かといって4万以上あるテーブルをjoinするのはお勧めしない。
737nobodyさん:03/03/09 23:44 ID:/LDM9G/p
mySqlAdminで右クリックでデータベースを作成しようとしても、
"Flushなんとか"ってもの4つくらいしかメニューに出ないんですが・・・
どうしたらよいですか?
738nobodyさん:03/03/10 01:19 ID:i0ycDkB/
>>729
たとえば2ちゃんを例にあげると、もし自分だったら、
板ごとにスレテーブル1つとレステーブル1つを用意するかな。
加えて、軽さを維持するために「dat落ち」の処理をしないとね。
739nobodyさん:03/03/10 02:08 ID:Flp9oiBQ
dat落ちの処理ってこの場合何を指していってんの?
740nobodyさん:03/03/10 03:29 ID:YULSwnq/
しかし、PHP + MySQL と JAVA で稼ぎまくれるな。
741nobodyさん:03/03/10 11:31 ID:???
>>739
一定期間更新されていないスレは
スレテーブルとレステーブルから
過去スレテーブルと過去レステーブルに
移動する。もしくは2ちゃんと同じように
HTMLなど静的ファイル化してしまう。
742nobodyさん:03/03/10 13:40 ID:???
pearを使えばmyなのかpgなのか考えなくていいの?
だったらみんながそれ使えばもうハッピーじゃん。
743地獄狂:03/03/10 16:25 ID:???
>>735,>>738
ありがとうございました。
MySQLはそんな処理をやっても大丈夫なくらい速いのですね。。。
これで安心してMySQLで構築できます。
744nobodyさん:03/03/10 22:08 ID:???
>>742
SQL文は結局書き分けなければ逝けない罠
745nobodyさん:03/03/11 02:59 ID:???
>>744
だから、PEARのDB_DataObjectに期待するわけだが…
MySQL関数の素使いに比べると、やっぱりスピードが気になるわけで。
元より速度が欲しくてMySQLにしてるのだし。
746山崎渉:03/03/13 17:04 ID:???
(^^)
747nobodyさん:03/03/16 15:34 ID:qwCMGIZU
ファイルシステムだったのをSQL化して
完璧だと思ってたらバグ潰し中にヤバイことに気づいた。
SQLは大文字小文字を区別しないらしいのだ。
select * id='test'でも
select * id='TEST'でも
同じ結果になってしまう。
(移植したい)現行のログがすでに大文字小文字混じっているので
大文字は不可とか強制にはしないで
大文字小文字両方使える&区別させる
(・∀・)イイ!方法はないでしょうか?
748nobodyさん:03/03/16 15:35 ID:qwCMGIZU
何か抜けてた。
select * from log where id='test'でも
select * from log where id='TEST'でも
だ。
だれかお助け〜
749nobodyさん:03/03/16 15:40 ID:???
そんなアホな、って気がするんだが....
750nobodyさん:03/03/16 15:55 ID:vZDlaTYB
うーむ、じゃあファイル→MySQLへの移植は無理じゃろうか・・・?
751nobodyさん:03/03/16 17:17 ID:KuvmbFJC
>>747

マニュアル嫁や

--
CHAR および VARCHAR フィールドの値はテーブルの生成時に BINARY 属性が
つけられない限り、大文字と小文字を区別しないでソート・比較されます。
BINARY 属性はその列の値が大文字、小文字を区別して、MySQLサーバを
実行しているマシンのASCII順にソート・比較されることを意味します。
752nobodyさん:03/03/16 18:36 ID:???
>>751
デキタ━━━━━━(゚∀゚)━━━━━━ !!
ありがとう。
753nobodyさん:03/03/18 22:49 ID:???
>>747
何か使ってない文字列(@とか)を利用して
@tなら大文字、tなら小文字と
754nobodyさん:03/03/26 17:17 ID:aQSLS2M4
>>346のロックって"lockman"の部分をテーブル毎に使い分けても
実際には別々のロックとして機能させる事は出来ないんですよね?
(GET_LOCKは名前に関わらず呼び出した時点で未開放のロックは解除してしまうみたいなので・・・)

テーブル毎にロックするスマートな方法はありませんかな・・・?
755nobodyさん:03/03/27 22:21 ID:???
>>751
それで一応日本語もsortできるね
756nobodyさん:03/03/29 04:17 ID:???
人少ねー・・・
757nobodyさん:03/04/10 09:13 ID:Gvrywi5t
特定のフィールドを指定してセレクトするのではなく、
逆に、「あるフィールド以外すべてセレクト」というふうなクエリーはかけないのでしょうか?
758うんこ:03/04/11 05:12 ID:0xz1/vPl
mySqlAdminで右クリックでデータベースを作成しようとしても、
"Flushなんとか"ってもの4つくらいしかメニューに出ないんですが・・・
どうしたらよいですか?
759nobodyさん:03/04/11 14:37 ID:???
>>758
PHP、MySQL、mySqlAdmin
インストールしなおしてみてはどうでしょう?
760nobodyさん:03/04/15 08:33 ID:???
>>757
NOT

PostgreSQLから移行したけど、Viewが使えない、サブクエリーが使えないなど、
困ったもんだ。
761nobodyさん:03/04/15 10:21 ID:???
 自分の不勉強をアプリのせいにする厨房ハケーソ
762山崎渉:03/04/17 12:06 ID:???
(^^)
763nobodyさん:03/04/17 13:47 ID:TKMGs//Q
>>760
原子性が大きく損なわれる・・・、といってみるテスト
764山崎渉:03/04/20 06:04 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
765nobodyさん:03/04/23 12:33 ID:0FJvBfYu
score_id | player_id | score | comment

てなテーブルがあるとき、 ORDER score DESC でソートしたあと表示すれば、
スコアランキングの完成なのですが、
「自分が何位なのか」をさくっと取得できる方法って無いですかね。
普通に全種得したあと player_id が一致するものを探す、ぐらいしか思いつかなくて。
766nobodyさん:03/04/23 13:28 ID:???
>>765

自分よりscoreが上のものが何人か勘定しる

SELECT score FROM my_table WHERE player_id = '$foo';
自分のスコアをどっかに記憶(例えば$my_score)
SELECT count(*) + 1 FROM my_table WHERE score > $my_score;
767nobodyさん:03/04/23 13:57 ID:???
>>766
sugeeee!
そうか、そうですね。自分より上の人が何人いるか探せばいいのか。アヒャー

アリガトン
768nobodyさん:03/04/23 18:28 ID:aG9NAudL
↑ただの馬鹿
769動画直リン:03/04/23 18:29 ID:wyYrHR5Q
770質問さん:03/04/23 22:52 ID:m9D4gJ4Y
あっあのう、まだPHP始めたばかりなのですが、
Perlであったqq();のような関数はPHPにはないのでしょうか?
エスケープシーケンスで\"とかやるのはHTMLが見にくくなって嫌なのですが・・・。
よかったら誰か教えてくださいお願いします。
771質問さん:03/04/23 22:53 ID:m9D4gJ4Y
あっすいませんスレ違いでした・・・ごめんなさい
772nobodyさん:03/04/23 22:57 ID:???
>>770
ヒアドクできるよ
773初心者さん:03/04/25 11:18 ID:???
| NAME | DATE | TXT

↑のようなテーブルで常に最新のTXTのみを表示させるにはどうすればいいでしょうか?
日によってTXTの件数が変動してしまうのでLIMIT関数が使えなくて…
NAMEには名前、DATEには日付、TXTにはテキスト文が入っています。
わかりにくくてすいません…
774nobodyさん:03/04/25 14:32 ID:???
 書き込み順にidつけて、表示するときはorder by id descにすれば?
775初心者さん:03/04/25 14:46 ID:???
>>774
返信ありがとうございます。
ええと例えば今日入力したものだけ表示する、と言ったものを作りたいのです。
↑の方法だと過去に入力されたものまで全件表示されてしまって…
776初心者さん:03/04/25 15:35 ID:???
追記。今日入力、というよりは最新のデータを表示
(今日入力されていなければ最後に入力した日のデータ)
させるようなものです。連続申し訳ない;
777nobodyさん:03/04/26 04:15 ID:???
若干スレ違いかもしれないですが、
現在PHP+MySQLの環境で仕事していて、
SQLのステートメントってどうやって管理したら
メンテナンス性がよくて管理しやすいかという問題をここ最近よく考えます。

最初はまあ何もわからんのでページのソースに直書きしてて、
こりゃメンテしにくい汚いとわかってきて、
各SQLステートメントに名前つけてその名前引数で
SQLを取得する一個のfunctionで1ファイルに全SQLをまとめてみたり、
テーブル毎に1テーブル1クラス1ファイルっぽい感じにまとめてみたり
色々やってみてはいるんですがどうもエレガントでないというか、
微妙に見通しが悪いというか、管理しにくいんです。

実際のところみなさんどうやってSQL管理してますか?
使ってるDBにストアドプロシージャがあってちゃんと使えれば
そんな問題は解決するもんなんですか?そういう問題じゃない?

なんか書いててこれで伝わってるのかどうかよくわからないですが
スマートにSQLを管理する方法があれば教えていただきたいです。


778nobodyさん:03/04/26 18:40 ID:???
779777:03/04/28 01:42 ID:???
英語苦手だから全部は読めねえ・・・>>778

う〜んなんとなく言わんとしてる事は伝わってくるんですけど、
結局、クラスとして隠蔽しても結局は中では
ステートメントを書く必要はあるわけで、
そこに変更が出た際はやっぱり中いじらないといけないわけで、
みたいな悩みから抜け出せないんすよ。
それはちゃんと俺が理解しきれてないからでしょうかやっぱ。

PEARのDatabase DataObjectsのSQLビルダーみたいなモデルというか
考え方でSQLステートメント自動生成っちゅうかステートメントを
完全にとは言わないまでもある程度中を意識することなくSQLを
外側から自動的にSQLステートメントを構築する仕組みができないだろうか、
という考え方と、SQLを意識して一括管理でスマートにやれる方法はないかの
2分化にどうしても行き着いちゃうみたいな。

もうちょっと詳しく>>778のとこ読んでさらに考えてみます。
あと、実際仕事ではどうしてるかとか、こんな考え方もあるよみたいなのが
あれば教えていただければ幸いです。
780nobodyさん:03/05/02 21:04 ID:HZhgt5uY
ユーザーのパスワードってどうしてます?
いまは登録時にmd5()したものをDBにいれといて
認証時に入力されたパスワードをmd5()したものと
つきあわせてます。でもこれだとよくある
「パスワードを忘れた方はこちら」みたいに
パスワードを通知することができないですよね。
生のパスワードを保存しておくのは抵抗あるし・・・
781gn355my0:03/05/02 21:07 ID:???
忘れたらフラグ立てて仮パスワード発行でいいんでないの?
782動画直リン:03/05/02 21:10 ID:iWiIA6UO
783nobodyさん:03/05/03 00:28 ID:rRtJ13mc
PHP自体の処理ってトロトロだね。。ほんと。Cで書いた処理の5倍は掛かる。
784nobodyさん:03/05/03 00:45 ID:???
>>783
インタプリタだからね。
785:03/05/03 02:08 ID:???
>>780
どうしても生がいやならdecryptできるようなもん作ればいいんでない?
786780:03/05/03 11:28 ID:???
>>781
やっぱそれが一般的なのでしょうか。自分もいまはそうしてます。

>>785
そういう関数があればと思ったのですがないですよね。
やっぱ自前で実装するしかないか・・・
787nobodyさん:03/05/04 01:06 ID:???
>>780
ENCODE(str,pass_str)
DECODE(crypt_str,pass_str)
788nobodyさん:03/05/08 20:23 ID:YPfgT5kA
共有レンタルサーバではMySQLのユーザ権限の設定するのって不可能??


789788:03/05/08 20:40 ID:YPfgT5kA
だめっぽいね。こういう場合は専用サーバか自宅サーバかVPN
http://vps.rapidsite.jp/service/index.html
を選ぶことになりまつか?
790nobodyさん:03/05/09 01:35 ID:???
MySQLのユーザ権限のユーザ権限がなぜ必要?
用途に応じて工夫の仕方があると思うけど…
どういう用途ですか?
791nobodyさん:03/05/09 17:41 ID:Qd0hLrnm
phpmyadminに間しての操作がわかるスレかサイトないですか?
エクセルで作成したデータの取り込みについて知りたいので・・・。
よろしくです。
792:03/05/09 22:45 ID:E81PY8iH
>>791
CSVにしてテキストファイルの読み込みでインポートではダメなん?
793791:03/05/10 10:07 ID:TaH04ytn
何とか上手くいったのですが・・・。
設定の仕方がイマイチよくわからないっす。
794nobodyさん:03/05/17 05:25 ID:ghc51a2p
charsetで質問
with-extra-charsets=allで作成した場合
PHPからeucで接続
デスクトップぷりからUTF8で接続
同時に接続なんて出来ませんか?
795nobodyさん:03/05/17 05:41 ID:???
デスクトップぷり、っていうのが何なのか知りませんが、
何か(ブラウザ、デスクトップぷり) → php → データベース のように接続した場合、
各「→」の部分で文字コードに応じて処理をすれば可能でしょう。
796nobodyさん:03/05/17 06:43 ID:0rspM7nm
大阪から戻った医師が新型肺炎感染の疑い=日本滞在中に発熱−台湾

【台北16日時事】台湾衛生当局は16日、大阪へのツアー旅行から戻った台湾人医師に、
新型肺炎(重症急性呼吸器症候群=SARS)の疑いがあることを明らかにした。
日本滞在中に発熱があったが、自分で薬を服用し、一時熱が下がったという。
感染が確定した場合、日本で発症した疑いがある。
 医師は8日に大阪入りし、13日に台湾に戻った。台北市内の総合病院「馬偕紀念病院」の
救急診療部門に勤務しており、旅行前、新型肺炎患者の治療に当たった。この患者は既に
死亡している。医師は現在、同病院内で隔離治療を受けている。
http://accessplus.jp/staff/in.cgi?id=11141
797nobodyさん:03/05/18 02:23 ID:???
mysql-3.23.56をソースからインスコしたんだけど
mysql_install_db.shとsafe_mysqld --user=mysql &
を実行する前にコンパイルした奴を消しちゃいまし
た。。もう一度コンパイルしなおすしかないですか?
それともバイナリとってきて、その中のやつを実行
しちゃってもいいんでしょうか。
798nobodyさん:03/05/18 05:56 ID:CSE2sYnQ
apacheとPHPとMySQLを入門サイトを見ながらインストールが終わった直後のものです。
win2000sp2にインストールしました。

質問なのですが、2chのdatデータをSQLのデータに変換できたら
スレッドを越えて名前やIDで検索できたりいろいろと便利そうです。
「2ch(or2ちゃんねる) dat sql 変換」でグーグル検索をしても
情報がなかったので、あまりやっている方はいないのかもしれないのですが
これを実現するには何を勉強したらよいでしょうか?

自分なりに考えたのですが、perlやrubyなどのテキスト処理言語と
mySQLが最低限必要で、ブラウザから便利に検索するには、それらに加えて
PHPやapacheも必要なのではないかと考えたのですが、いかがでしょうか?

もしよろしかったら、ご指導お願いいたします。
799_:03/05/18 06:26 ID:???
800nobodyさん:03/05/18 06:50 ID:???
>798
負荷により不可。
801798:03/05/18 07:04 ID:???
すみません。書き忘れました。
個人的な利用を考えています。

公開できればもっと良いと考えていますが、とりあえずは一人用のものが
できれば・・と考えています。
802bloom:03/05/18 07:08 ID:rGbr42DC
803かおりん祭り:03/05/18 08:08 ID:???
804動画直リン:03/05/18 09:08 ID:rGbr42DC
805紺野あさみ:03/05/18 13:24 ID:???
806nobodyさん:03/05/18 14:39 ID:NCFj4xES
日本の名物は過労死
佐川とロジテムどっちがひどい?
田中真紀子と親密な日本ロジテム(日清系 上場企業 みずほの融資先)の
子会社せいも素(みずほの融資先)で
サービス残業させすぎの過労による自殺者が出たんだってね。
http://www.samos.co.jp
http://tmp.2ch.net/test/read.cgi/company/1046775680/l50
.      / ̄\  +.  ∧_∧アハハハ テンゴクヘイッチャウヨー  +
  イクナヨー( ´∀`)    (´∀` )  
      (つ  つ     (つ  つ■
.   +  ( ヽノ      ( ヽノ      
807nobodyさん:03/05/18 14:48 ID:fx1+Jhvi
PHP、MySQL共に初心者ですが、下記がちょっとわかりません。

$sql = "UPDATE user SET namae = 'hayashi' WHERE no = '100';
$result = mysql_query($sql);

MySQLに接続するコードと、上記のコードを書いたphpファイルを
作ってみたのですが、レコードが更新されません。
なぜでしょう??だれかおしえてください〜〜
808nobodyさん:03/05/18 14:58 ID:???
>>807
だぶるくおーてーしょん、が抜けとる。
809807:03/05/18 15:02 ID:fx1+Jhvi
すいません、事故解決しますた。
no ='100' → no = 100 にしたらできました。
なんでかよくわからんですが・・・。
ダブルクオーテーションはこっちに書き忘れただけです、すんません。
810bloom:03/05/18 15:08 ID:rGbr42DC
811nobodyさん:03/05/18 15:27 ID:???
>>809
データ型の概念が分かっていないね。
クオーテーションで括ったら、文字型と判断されるよ。
812nobodyさん:03/05/18 15:33 ID:???
データ型に関してはphpは内部でけっこう融通利かせてくれるからね。
早いうちにミスして気づいていかないと。
813807:03/05/18 15:46 ID:fx1+Jhvi
ですね、データ型の概念がわかってないのが問題っぽいですね。
namae = 'hayashi' のhayashiのところを 変数を使いたい場合、
どうすりゃいいんでしょ汗?
色々やってみましたが、駄目でした。
814nobodyさん:03/05/18 15:53 ID:VD7gKE48
http://homepage3.nifty.com/coco-nut/
.      / ̄\  +.  ∧_∧アハハハ テンゴクヘイッチャウヨー  +
  イクナヨー( ´∀`)    (´∀` )  
      (つ  つ     (つ  つ■
.   +  ( ヽノ      ( ヽノ
815nobodyさん:03/05/18 15:53 ID:???
$sql = "UPDATE user SET namae = '".$name."' WHERE no = 100";
普通こうするんじゃない?
816807:03/05/18 16:05 ID:fx1+Jhvi
・・・なるほど、やっとうまくできました。
できればなぜそうなるのか教えてほしいとこですが、
ちょと自分で調べてきます。う〜〜んもっと勉強せねば。
817807:03/05/18 16:07 ID:fx1+Jhvi
言い忘れてました。
教えてくれた人ありがとうございました。精進に努めます
818_:03/05/18 16:14 ID:???
819nobodyさん:03/05/18 17:22 ID:???
>>815
$sql = "UPDATE user SET namae = '${name}' WHERE no = 100";
これでいいんじゃない?
{ } はなくてもいいが必要な場合もあるし、視認性のためにいつも
つけることにしてる
820nobodyさん:03/05/18 18:23 ID:???
>>807安心しろ、俺もサパーリワカラソ。
821nobodyさん:03/05/18 19:40 ID:ai9Y3lhL
MySQLに15万件のデータ入れたらぶっ壊れちゃったよ・・・
MySQLってこんな物なの?
822nobodyさん:03/05/18 19:44 ID:???
ぶっ壊れたってやっぱり火を噴いたり入力したデータがとても口では言えないような物に置き換わってたり?
823nobodyさん:03/05/18 19:57 ID:ai9Y3lhL
>>822
MySQLから火は噴くかよ(w
入力したデータがバグっちゃったんだよ。
824nobodyさん:03/05/18 20:32 ID:???
なーんだスクリプトのバグか。
825nobodyさん:03/05/18 22:14 ID:???
>821
つか、君の設計が「そんなもん」かと。ちゃんと設計しようよ。

あとDB(データの方)の信頼性は、使ってるファイルシステムにも依存する。
DBデータも単なるファイルでっせ。
826nobodyさん:03/05/18 22:46 ID:uOiOSJ6c
いろいろやってるうちにMySQLが起動しなくなったよ。
やばいな・・・
827私のお金が増えている:03/05/18 23:35 ID:c9BgLl5+
不況なんか吹っ飛ばせ!
ここをみてくださいね。
http://www.c-gmf.com/index3.htm
http://www.c-gmf.com/index2.htm
http://www.c-gmf.com/mail.htm
828nobodyさん:03/05/18 23:37 ID:uOiOSJ6c
やっと起動
ホッ
829nobodyさん:03/05/19 01:40 ID:???
MySQLインスコしてみたんだけど
% mysql -u root mysql
mysql> SELECT host,user,password FROM user;
+-----------+------+----------+
| host | user | password |
+-----------+------+----------+
| localhost | root | |
| myhost | root | |
| localhost | | |
| myhost | | |
+-----------+------+----------+

userが空になってる行はどういう意味があるの?
830nobodyさん:03/05/19 03:46 ID:???
>829
匿名ユーザ。

ビルトインユーザとして入ってると思うけど、匿名ユーザとしての認識のないまま
放置するのは危険なので削除すべし。意図して匿名ユーザを作るのは構わんが、
その場合、mysqlのユーザの認識優先順位とか調べた上で作るべし。
831nobodyさん:03/05/19 03:55 ID:???
>>830
なるほど。サンクス。postgresと違ってディフルトの
設定が危険なことになってますね。
GRANTやREVOKEってのは user,db,hostテーブルを操作
するラッパーみたいなものなんですか?セッション変数
をMySQLで管理しようと思って導入してみた次第です。
関係ないけどPHP Blackbookにのってるsession handler
のコードは役立ちました。
832nobodyさん:03/05/19 08:30 ID:???
 MySQLがどうこうって(Postgresもそうだけど)文句言ってるやつって、たいていの場合
Primary key指定せずに大量のデータ(10万レコード単位のオーダー)を動かそうとして
いるんだけど、世の中の手引きってindex作るっつー基本すら説明してないのかなぁ。
 あるいはWin"doze"のアプリみたいにマニュアルやReadMeすら読まずに動くと
思ってる昆虫みたいな連中なのか。
833nobodyさん:03/05/22 00:00 ID:???
インデックスの件やけど、中間一致検索をうまくやる(HDに負担かけない)方法ってなんかないですかい?
FULLTEXTインデックスも微妙に日本語対応してないみたいやし・・・
834山崎渉:03/05/22 01:55 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
835nobodyさん:03/05/22 23:24 ID:???
>>833
ナマズに食わせる
836nobodyさん:03/05/23 02:21 ID:???
>>835
やはりナマズっきゃないのかな・・・

公式のドキュメント(Mysqlはどのようにインデックスを使用するか)にこんなのがあったけど

MySQL 4.0 does another optimisation on LIKE.
If you use ... LIKE "%string%" and string is longer than 3 characters,
MySQL will use the Turbo Boyer-Moore algorithm to initialise the pattern for the string and then use this pattern to perform the search quicker.

これはインデックス作れば最初にワイルドカードつけたあいまい検索でもそれなりに速いということ?
それともインデックス関係無しに最適化されるという話でつかね?
837nobodyさん:03/05/23 09:02 ID:???
>836
 その一文節前に

以下の SELECT 文はインデックスを使用しません:

って書いてあるじゃん・・・
838nobodyさん:03/05/23 09:06 ID:???
>836
Boyer-Mooreを使って検索するというのなら、インデックスを使わない場合の
LIKE "%string%"の検索の舐め方だと思う。あと、どのみち%string%のような
中間一致にはインデックスは使われない。

折れもkakashi使ってインデックス相当のフィールドを生成して
そっち使って検索してる部分もあるが、"分かち書き"で取りこぼしたりするのは
必至なので精度よりも速度が求められるシチュエーションだけだね。
普通LIKE "%string%"の全舐め。楽だし(笑
839838:03/05/23 09:09 ID:???
え、茶筅の方が精度高いだろって?
諸事情により茶筅使えないんですわ。
840nobodyさん:03/05/23 22:06 ID:???
レスサンクスコ
でも茶筅もカカシも難しそう(つかめんどくさそう)でつね
当面はあいまい検索で我慢して、少しづつ勉強する事にしまつ
841nobodyさん:03/05/23 23:52 ID:KUDYp0Dt
WinXP + AnHTTPD v1.41g + PHP v4.3.1 + MySQL v4.0.13
という環境で質問です

インストールは全て問題なくできて、PHPもMySQLもそれぞれ
単独での動作は確認できたのですが
試しにphpMyAdmin v2.5.0を入れてPHPからDBにアクセスしてみようとしたら
動作上は何も問題ないのですが、なぜかDBにアクセスするたびに
ビープ音(内臓スピーカーから出る方)が鳴り狂います

鳴り狂うわりには操作自体は全て問題なく行えるので変だなぁと思って
<? php
  $userlink = mysql_connect("localhost", "<ユーザー名>", "<パスワード>");
  mysql_select_db("test_DB", $userlink);
  $result = mysql_query("SELECT * FROM test_table", $userlink);
  while ($myrow = mysql_fetch_row($result)) {
    echo "$myrow[1]";
  }
?>
みたいなコードを書いて実行してみたら
Parse error: parse error, unexpected T_VARIABLE in D:\HTTPD\public_html\test.php on line 2
なんていうエラーが返ってきてconnectすらできませんでした
#phpMyAdminからは日本語データ入力さえも全部正常に動いているのに・・・

エラーコードやらPHP+MySQL+Winやらでググってみても
そんな症状が報告されている例は見つけられず、途方に暮れています
どなたか何が問題なのかとっかかりだけでもわかるかたいらっしゃいませんか?
842841:03/05/23 23:57 ID:???
補足
ビープが鳴り狂うくせにどのログにもエラーが残らないのでマジで泣きそうです
843nobodyさん:03/05/24 00:41 ID:???
>>842
<? php の間にスペースはいってない?
844nobodyさん:03/05/24 01:24 ID:???
>>843
は・・・はずかしい・・・おっしゃるとおりです
しかしピーピー鳴るのは解決せず

ちなみに先のスクリプトだとビープ音は2回
phpMyAdminで、$cfg['Servers'][$i]['user']と['password']だけ設定した場合も2回
ところが['controluser']と['controlpass']も設定すると4回鳴る事がわかりました
わかったところで何故なのかは未だ不明ですが・・・

コマンドプロンプトからは何の問題も無く(ビープも無く)操作できます
845841:03/05/24 13:34 ID:???
結局Apacheを導入したらビープは鳴らなくなりました
AnHTTPDのせいだったのね・・・
PATH_TRANSLATEDを使うとかの設定もしたのにナァ
846nobodyさん:03/05/26 18:20 ID:ruGAuzSz
初歩的な質問で申し訳ありません。
Mysqlで、テーブルロックせずに同時アクセスがあった場合データが消滅することってあります??
847nobodyさん:03/05/27 01:33 ID:???
あれ?そうだったっけ?
漏れはロックなんて使ってないけど。
つかロックかけようとするとクエリーがエラーになる。
ユーザーにはINSERT,UPDATE,SELECT権限与えてるけど、
これじゃあアカンのかしら?

>>846
innodbなら行単位でのロックが自動でかかるんじゃないか?
Myisamは必要っぽいけど。
848nobodyさん:03/05/27 01:53 ID:PRpkR2kf

(´―`)y━~~タバコとアダルトは二十歳になってから☆
http://homepage3.nifty.com/coco-nut/
849nobodyさん:03/05/28 22:07 ID:???
おっす
850nobodyさん:03/06/01 20:40 ID:Xxw6SumH
phpでmysqlを使っています。
この時間帯、
too many connection
が出まくることを発見しました。
mysql_connect();
mysql_select_db();
ソースのこのあたりです。
どうすれば解決できますか?
851nobodyさん:03/06/01 23:30 ID:???
>850
サーバを変える。空いてるところに
852nobodyさん:03/06/02 02:50 ID:VH23vLoj
>>851
レン鯖なので変えられません。
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_MySQL_Optimization.html#Server_parameters
ここを見ながらmax_connectionを設定しようと思うのですが、
まず説明の中のmysqldという実行ファイルがない。
mysqlで--helpしても
max_connectionは出てこないし。
いったいどうすれば…
853852:03/06/02 03:18 ID:???
自己レスですができますた。
自分の環境では
safe_mysqld
がそれに当たっていて、一旦止めてから
safe_mysqld -O max_connections=500 &
としました。
mysqladmin variables
で確認したら設定できているよう。
これで解決できるのかどうかはまだ不明ですが。
854nobodyさん:03/06/03 17:17 ID:1aVIbVtl
>852
何も書いてなかったんでありがちな、
"無料"で共用サーバ使ってて文句たれてんのかと思ってた…わりぃ

MySQLもPHPも自分のコントロール下にあるなら、php.iniの
module settingの[MYSQL]の項にもコネクションに関する設定があるので
そちらも見直してみてください。最近のPHPのデフォルト設定だと制限無し
になってるのですが、それに制限が掛かっているかもしれません。
855nobodyさん:03/06/03 17:49 ID:1aVIbVtl
あ、あとmax_connectionsを増やすというのは、アタリ。
デフォルト(あらためて指定しない場合)は100とかなり小さいので
全然設定を見直してないと直ぐに上限に達します。

起動パラメータとして直接指定しても構いませんし、
設定ファイルmy.cnfやmy.iniに記述しても構いません。
#私はcnfで1024を指定しています。
856nobodyさん:03/06/03 17:56 ID:???
857nobodyさん:03/06/04 01:42 ID:???
mysqldump --helpコマンドを打っても反応なし
これはなんかインストールしてなかったからでしょうか?
ちなみにLINUXのRPMバージョンのServerとClient programsとLibraries and header filesを入れてまつ
858nobodyさん:03/06/04 02:00 ID:+AMYXFHe
859nobodyさん:03/06/04 04:21 ID:???
>857
ClientのRPMに入ってるはずだけどねぇ。RPMはどこの?
取り合えずpathの影響かも知れんから、ダイレクトに叩いてみたら?
860nobodyさん:03/06/05 00:31 ID:???
>>859
MySQL.comで入手した最新のRPM(4.0.13)でつ
それほど弄ってるわけではないので不思議でたまらないでつ
・・・ところでダイレクトに叩くとは?
mysql -u root -p DBname
を使わない方法でつか?
861nobodyさん:03/06/05 02:12 ID:???
>860
RPMをインストールした時に置かれることになっている場所を
直接指定して叩くということ。

MySQL ABのMySQL-client-4.0.13-0.i386.rpm拾ってきてみて、中身見てみたけどたけど
# rpm -qlp MySQL-client-4*.rpm
/usr/bin/msql2mysql
/usr/bin/mysql
/usr/bin/mysql_find_rows
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysqlaccess.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlshow.1.gz
入ってるけど?

/usr/bin/mysqldump --helpと叩いて味噌。
その前に「rpm -qa | grep -i mysql」して、
MySQL-clientパッケージがちゃんと入ってるか見た方が良いかも
862nobodyさん:03/06/05 20:06 ID:???
>>861
で、できますた!
なぜ動かなかったのだろう?
と、とりあえずこれからゆっくり原因を研究してまつ。
はやくタコ状態を脱出しないと・・・
とにかくめっちゃサンクスコでつ!!!
863nobodyさん:03/06/06 13:23 ID:9Sig5kBB
mysqlで
4000くらいのレコードのソートって結構負荷かかります?
それでランキングの表示をしていたんですが、
そこの呼び出しが集中(1時間に1000くらい?)したら
マシンがほとんど無反応になる(pingは反応するがsshでも入れない)
んですが。
連鯖でメモリは64Mだっと思います。メモリが少なすぎるんですかね?

864863:03/06/06 13:29 ID:9Sig5kBB
しかもその状態が半日続いたりします
その後遺症の方がでかいです
865nobodyさん:03/06/06 14:02 ID:???
んなこたない。
テーブル構造と使ってるSQL書いてみ。
メモリは確かに少ないかもね。共有鯖かい?
866863:03/06/06 21:40 ID:9Sig5kBB
専鯖です
columnsは
int(10) unsigned
varchar(20)
varchar(60)
varchar(8)
varchar(40)
varchar(200)
tinyint(4)
varchar(40)
text
text
varchar(40)
varchar(40)
tinyint(4)
int(10) unsigned
varchar(15)
varchar(15)
datetime
varchar(255)
で、
select counter from data_T order by counter desc
これをコマンドで打ち込むと11秒かかりました。
こんなものでしょうか?
867 :03/06/06 22:27 ID:???
>>863
DBの使うリソースが心配だったら、cronなんかで定期的にランキングを
ファイルに出力させて、そちらにアクセスさせる。
っていう方法で逃げるってダメ?
868nobodyさん:03/06/07 00:46 ID:???
メモリ64Mから察するに鯖の性能自体に問題があるような気が・・・

CPUが266MHZとかATAのHD一つしか付いてないとか・・・
869nobodyさん:03/06/07 01:48 ID:???
 つうか、プライマリーキーがないじゃん・・・
870nobodyさん:03/06/07 10:54 ID:???
my.cnfの設定項目で「table-cache 512」ってのがあるけど、
これって、テーブル(最大512個)をそのままメモリにぶち込んでくれるってこと?
ハードディスクの負担が軽くなると嬉しいけど。
871863:03/06/07 18:02 ID:???
>>867
それがベストですね。
そんなにリアルタイム性が要求される種類のランキングでもないので、
1日一回更新にします。
さっき解析みたら11秒かかるソート処理が1分に6回くらい呼ばれていました。
プロセスが別だと思うので単純に足し算はできないですが、
多い時にはそれがもっとあったはずなので…。
>>868
3年くらい前に借りた鯖なのでスペック的には結構しょぼいかもしれません。
266MHZはいくらなんでもないと思いますが…。
>>869
一番上のint unsignedがプライマリキーになっています。
872nobodyさん:03/06/07 22:39 ID:???
>>863
そのcounterとかいうカラムにインデックス張ってる?
873nobodyさん:03/06/07 23:09 ID:???
つかMySQL4.0ならクエリーキャッシュって手があるんだが・・・
もっとメモリをのせれ
874873:03/06/07 23:14 ID:???
whereがなくデータを全部取得してるから、
インデックスの効果も薄いような・・・
データ取得途中でメモリの空き容量がなくなって、
スワップ起きてるんじゃないかな?
875nobodyさん:03/06/09 17:12 ID:7gQlaCxU
他鯖のMySQLから、
mysql_query()でselectした場合、
その時点ですべてのデータが送受信されるのでしょうか?
それともその時点ではポインタのような情報のみ送られて、
mysql_fetch_row()などした時だけ、その分のデータが送られるのでしょうか?
876nobodyさん:03/06/10 23:45 ID:???
>>875
php_mysql.c,v 1.174.2.12読んだ感じでは、そのままコンパイルすると
PHPのmysql_query()関数でクエリ実行が成功したら、
MySQL APIのmysql_store_result()してるみたいなんで
PHP-MySQL間では結果セット全てを取ってきてますな。

"他鯖"っても同じサーバで動いてようと、
PHPから見りゃMySQLは"別"なんで自/他だろうが変わんないよ
877nobodyさん:03/06/11 11:09 ID:eWSXWUXf
Mysqlで
SELECT * FROM hogetable WHERE hoge='mona'
としても
SELECT * FROM hogetable WHERE hoge='mona '
としても同じ結果が帰ってくるのですが,
語尾のスペースもちゃんとみるようにするにはどうしたらよいですか?
878_:03/06/11 11:16 ID:???
879nobodyさん:03/06/11 13:09 ID:???
質問なんですが
アドレス帳を作るときに、
電話番号というフィールドを作るのですが、
電話番号を複数持っている場合がありますよね。
こういうときはどういった処理をさせればいいのでしょうか。

単純に電話番号1、電話番号2、電話番号3・・・・
とフィールドをいくつか作るしかないのでしょうか。
880nobodyさん:03/06/11 13:15 ID:eWSXWUXf
881nobodyさん:03/06/11 13:16 ID:???
リレーションを使うんだよ
882nobodyさん:03/06/11 13:20 ID:???
正規化って、単純に同じ会社とかが続く場合IDを設定して
別のテーブルと関連づけてどうのこうのっていう
使い方だけじゃないんですか?
883nobodyさん:03/06/11 13:55 ID:???
>>882
とりあえず、>>880でヒットしたページを読め
884nobodyさん:03/06/11 14:02 ID:???
885nobodyさん:03/06/11 14:16 ID:???
オブジェクトの数だけ新たに関連テーブルをつくるってことですか?
886nobodyさん:03/06/11 14:21 ID:???
あーわかった。
キーを同じくしてオブジェクトを複数作る感じですか。
887nobodyさん:03/06/11 14:31 ID:???
888nobodyさん:03/06/12 01:26 ID:???
>>877
SQLの文字列型フィールドの扱いを考えたら判る。更にMySQLの場合VARCHAR型は
「後続の空白は値の格納時に取り除かれる(この空白の除去は ANSI SQL仕様とは違っています)」
という仕様があるので、バイナリ型(BLOB型やTEXT型)を使う形になる。
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_Reference.html#String_types

また、末尾の空白が入る可能性のある"特殊な"フィールドに対して
値の最後尾に必ず何らかの文字を1byte入れると決めておいて、
その1byteを入り/出しの際にハンドリングするようにプログラムを作る
という方法でもある程度はカバー可能かと思う。
889nobodyさん:03/06/12 10:08 ID:rhXQRsqY
おはようございます〜
これからySQL使おうとしてて、この間インストールしてパスワード設定までしたけど
パスワードを忘れてしまったので、もう一回設定しなおそうと思い、
アプリケーションの追加と削除で全部消してから、インストールしなおしたんだけど、
最初の起動の時って、ユーザー名とパスワード聞かれたのに、
今回は聞かれないんです・・・?
なぜ?アプリ削除しても、どっかに設定の履歴残っちゃってるのかなぁ・・・
検索かけてみたけど、それらしいファイル等は見つからず。。。
でも、パスワードわかんないから、入ろうとしても
ERROR 1045: Access denied for user: '[email protected]' (Using password: YES)
ではじかれちゃうんです・・・(T-T)
どなたか、再設定のいい方法知ってますか?
890nobodyさん:03/06/12 12:04 ID:???
>>889
まずySQLの再インストール
それでもだめだったらMySQLの再インストール
それでもだめだったらOSの再インストール
それでもだめだったら窓から投げ捨てる
それでもだめだったらとりあえずオナニーして帰宅
それでもだめだったら疥癬切手首釣って寝る
891nobodyさん:03/06/12 14:59 ID:???
>889
MySQLはユーザ管理情報をデータベース上に持っている。
これは再インストールしても削除/上書きされない
(上書きされるようならかえって困る)
パスワードを忘れたぐらいなら、下記の方法で再設定。
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_Problems.html#Resetting_permissions

読んで意味が判らんとか、Windowsでのやり方を手取り足取りなんて言うヤツは
「アンインストール→インストールディレクトリ削除→再インストール」の手順。
892nobodyさん:03/06/13 02:22 ID:pF2u1x3J
複数のMySQLサーバーでクラスタリングってできますか?
どこ探してもレプリケーション止まりで・・・。
893879:03/06/13 06:31 ID:???
879です。
serial_idを導入し、
第2正規化までして表を分割することで解決できました。
ここでまた質問なのですが、
この分割した表を結合して表示すると
ID 名前   電話
01 はなこ 03-2222-2222
01 はなこ 00-0000-0000
02 あおき 00-3253-2123
03 なおこ 43-2342-2342
のようにIDが重複して表示されるのですが
コレを

ID 名前   電話
01 はなこ 03-2222-2222
       00-0000-0000
02 あおき 00-3253-2123
03 なおこ 43-2342-2342

のように表示させるにはどうしたらよいのでしょうか。
何か便利な機能などあるのでしょうか?
894nobodyさん:03/06/13 08:00 ID:???
>>893
女陰
895nobodyさん:03/06/13 08:04 ID:???
>>893
削除依頼だすよ
896nobodyさん:03/06/13 10:16 ID:???
>>892
クラスタリングは出来ない。その辺が必要ならOracleとかPostgresを採用。
マスタ−スレーブ・レプリケーションは可能。つまり検索の負荷分散はできる。
マスタ−スレーブの切り替えは自動では出来ない(スクリプト書きゃ簡易的には出来るのかな)ので
障害時にマスタが死んだ時に、スレーブ→マスタへクラスチェンジするにはちょっとだけ作業時間が時間が掛かる。
#Postgresのクラスタリングも障害対策としてじゃなくて負荷分散化の手法だったと思うけど。

つかDBのクラスタリングはOracleだと150万円ぐらいからの世界だし、元々MySQLが得意とする分野ではないな。
スピードが欲しければCPUの数と何よりも"DiskI/O"を上げた方が手っ取り早いです。
MySQLじゃなくても、Oracleであっても多くの場合そうしてるはず。
897nobodyさん:03/06/13 10:24 ID:???
>>892
ちょっと違うかもしれないけど

http://www.softagency.co.jp/mysql/emic.html
898ド素人:03/06/14 13:48 ID:FXhQPxM8
すいません。質問です。
PHP + MySQLを利用したシステムの設計で悩んでいます。
コスト上の制約で、共有レンタルサーバーでの環境になりそうなのですが、
深夜の決められた時刻にバックアップを自動で行うような事は可能なので
しょうか?
スケジュールによる自動実行は、CRONが一般的なのでしょうけれど、それ
を許している共有レンタルサーバーは、少なそうなもので、CRON以外の実
行方法があれば、教えて頂きたいのですが。
宜しくお願いします。
899nobodyさん:03/06/14 13:59 ID:???
>>898
MySQLにはMySQLDumpという便利なツールがついていて,
DBの内容をSQL文にしてダンプしてくれる。
これをシェルスクリプトかなんかで圧縮して保管したりftpで別ホストに投げたりするのを書いて,
crontabで時間を決めて実行させるようにすればできる
crontabが使えないのなら,crontabが使える別ホストから,上記のシェススクリプト
を起動するようなスクリプトを書けばよい
900nobodyさん:03/06/14 14:06 ID:???
>>899
結局cronやん(;´Д`)
901_:03/06/14 14:30 ID:???
902ド素人:03/06/14 14:32 ID:FXhQPxM8
>>899さん
ご丁寧な返信、ありがとうございます。
やはり、CRON系になりますよネ..。
導入後は、極力メンテナンスフリーにしたいもので、別ホストからのキック
という行為も、避けたかったりなんです。
バックアップしたいのはDBだけなのですが、難しい環境ですよネ..。
PHPやMySQLに、スケジュール実行機能のようなものが用意されていれば、そ
れを使いたいのですけれど、無さそうですし..。
903899:03/06/14 14:49 ID:???
>>902
たとえばデータの更新をする際にカウンタをとって,INSERTかUPDATEが25かい
行われたらMySQLdumpを起動してバックアップみたいなコードを書くのはどう?
「時間を決めて」にはならないけど
904nobodyさん:03/06/14 14:49 ID:???
>902
スケジュール実行つう時点でPHPにもMySQLにもそういった機能はない。
これはUNIX系ならcron,atとかWindowsならスケジュールなんやらの機能。
んでバックアップはdump以外には、SQLのSELECTによるベタ抽出、
DBファイル自体のバイナリーバックアップなんかがある。

>別ホストからのキックは避けたい
まず共有レンタルサーバーでMySQL/cronの両方が使えるところを探す
バックアップは先のバイナリーバックアップやdumpの方法は、共有サーバだと
手段が提供されていない可能性があるので、使えるか確認。
SSH等でコンソール操作が開放されているサーバが良い。
海外サーバだと該当するところで安いところ結構ありますよ。
(極端に安いところは避けること最低US$10/mth以上)

あとサービスにデイリーバックアップがあって、バックアップからの戻し作業に
比較的柔軟に対応してくれるところを探す。ハード障害時の戻しは普通にやってくれる
けどユーザの都合による戻しは、規定サービス外になるからね。
905nobodyさん:03/06/15 00:16 ID:???
でもコンソール操作まで開放されてるような共有鯖ってちと怖くねえ?
扱うデータにもよるけど・・・・
906nobodyさん:03/06/15 00:27 ID:???
>>905
俺はシェル使えない時点で却下。
どんなに安くて良さげな鯖でも。

cron で実行するのはだいたいシェルスクリプトだと思うから
シェルがつかえないんじゃスクリプトの動作チェックもできやしない。

それに SSH 使えりゃ FTP は不要だし、通信路が暗号化されて
データ盗まれる心配もないし。
907ド素人:03/06/15 19:30 ID:ZJ3F1oWL
Apacheのレベルでは何とかなりそうですよネ。
http://www.atmarkit.co.jp/flinux/rensai/apache08/apache08a.html

共有レンタルサーバー、プライバシーのレベルで、同居人同士の干渉はシェル
レベルでも避けたいものです。UI上でも、他人の存在は一切知らない/気付か
ないでいたいものです。
負荷の部分でも、干渉を避けたいですけれど、これは借りてみないと分からな
いですし..。

ここまでのアドバイス、大変助かりました。感謝しております。
SQLもPHPもそれほど詳しくないもので、機能として存在するかがネックでした。
また何かありましたら、宜しくお願い致します。
908nobodyさん:03/06/16 01:04 ID:???
>907
シェルレベルでは案外きちんと干渉問題にはならない設定になってます。
元々そういう使い方を想定してるから>UNIX系
909PerlでDBM:03/06/17 15:50 ID:nJC3WMH6
MySQLの旧コア部
BSD DB(Berkeley DB)
の方がMySQLより早いのかなわからない。
ので教えてくださいませんか。
サンプル有り
http://www.ecopig.jp/comucale/dbm.htm
910nobodyさん:03/06/17 16:17 ID:???
ttp://japan.mysqlstudio.com/index.php
↑のnavicatってどうなん?

DLしてみたけど接続できない。。。

検証お願い〜つД`)
911nobodyさん:03/06/17 20:55 ID:???
>>910
なかなかよかったよ
912nobodyさん:03/06/17 22:16 ID:???
前にDLしたときEUC-JPが文字化けしたんだけど
もう直ってる?
913nobodyさん:03/06/18 17:23 ID:ncBdk+Qv
PHPとは関係なく、MySQLの事なんですが
DBでカウンタなどを作る場合、一度SELECTで呼び出さずに
UPDATEの時に数値を増やす事って出来ますか?
914nobodyさん:03/06/19 00:01 ID:KVEfyld0
MySQLとPostgreSQLの違いって何ですか〜
初心者で御免

915nobodyさん:03/06/19 01:12 ID:???
>>913
UPDATE table SET count = count + 1 のように
SETの値に自身を含ませた算術式を用いることでカウントアップができる。
UPDATE文の基本的な使い方なのでマスターすべし。
916nobodyさん:03/06/19 01:27 ID:???
>915
有難うございます!
悩んでいたので、これですっきり眠れそうです。
917nobodyさん:03/06/20 00:46 ID:???
>>914
綴りが違う。あと、
速さ PG<My
機能 PG>My
918nobodyさん:03/06/26 12:56 ID:ruPp/IY2
phpmyadminを使って
データベースの内容を修正しようとしています。
タイプがvarcharなのですが、そこに日本語を使おうとすると、
phpからそこを呼び出して、表示させる際に必ず文字化けしてしまいます。
(phpmyadmin上では文字化けせずにちゃんと表示されるのですが・・)

解決策がありましたら教えてください。
よろしくおねがいします。
919nobodyさん:03/06/26 13:12 ID:???
phpmyadminのエンコードは?
表示させてるエンコードは?
かいてみ。
920_:03/06/26 13:16 ID:???
921nobodyさん:03/06/26 15:03 ID:???
エンコードがおかしかったみたいです。
mb_convertつかったらちゃんと表示されました。

>>919
どうもありがとうございました。
922nobodyさん:03/06/28 00:23 ID:aMKyXNMC
Linuxの半角の大文字小文字が混在するカラム内のデータ検索で、
大文字小文字を無関係とする検索は可能?
923nobodyさん:03/06/28 01:52 ID:???
>>922
つかBINARY属性のつかない、普通のCHARとVARCHARフィールドの値はケース依存しない。
http://www.mysql.gr.jp/jpdoc/4.0/manual.ja_Reference.html#CHAR
924922:03/06/28 02:07 ID:???
>>923
ありがとう。わかりました。
925nobodyさん:03/06/28 13:00 ID:???
MySQL初心者の質問です。

数値型のワイルドカードというのはあるのでしょうか?
つまり
select * from table where int >= ○○○;
のような文で、○○○にワイルドカードを入れると常に結果が真になるようなものです。
ご教示願います。
926nobodyさん:03/06/28 15:55 ID:???
>>925
MySQL以前に「数値型のワイルドカード」って何(数学の問題)?

常に結果が真が欲しいなら"1"とか"1 = 1"とでも書けば良い。
そもそもWHERE節を使う必要もない。
NULLを外したい(数値との条件)のなら、"IS NOT NULL"

○○○の部分だけを変えて動作を切り替えようとしてるから、どうして良いか
判らなくなってるんだと思うけど、普通WHERE以降の条件部分全てを変えるか、
WHERE節ごと変化(付けたり付けなかったり)させる。
927925:03/06/28 16:24 ID:???
>>926
お返事ありがとうございます。

現在PHPの演習として、HTMLでフォームを作りそこのフォームから送られてきた数値を
SQL文に組み込んで検索させて結果を表示するWebDBを作っています。
で、
$sql = "select * from table1 where percentage >= ". $_POST["percentage1"] ." and percentage <= ". $_POST["percentage2"] ."";
のようなSQL文を作ったのですが、フォームから空白が送られてきた場合にすべてのデータが
HITするようなSQL文を変数の値のみを変更することによって作りたかったのです。

926さんの言うとおり
>○○○の部分だけを変えて動作を切り替えようとしてるから、どうして良いか
>判らなくなってる
ですね。

ご助言ありがとうございました。
とりあえず空白が送られてきたときに条件分岐させて別のSQL文を送るようにしようかと
思います。
928nobodyさん:03/06/28 16:55 ID:???
>>927
演習だからまあ良いけど、公開しようがしまいが多少なりとも
外に繋がるところに置くなら、ユーザからの入力値をそのままSQLクエリに使っちゃ駄目。
最低でも数値ならPHPでintval関数などを通すとか、is_numeric関数で検証するなどして
期待している通りの値なのか確実にしてから使う。

http://jp.php.net/manual/ja/security.database.php#security.database.sql-injection
他にも"SQL セキュリティ"をキーに探すと参考になるページが見つかると思うので
調べて、危険性について理解しておくこと。
929ショシンシャ:03/06/30 11:31 ID:???
HOGEというフィールドの一番ケツのセルのデータを取り出すには、
select * from test where HOGEのあとになにをいれたらいいんでしょうか。
930nobodyさん:03/06/30 12:31 ID:???
>929
HOGE 内の一番右側の文字を取り出すの?
それとも一桁目の数字?
931ショシンシャ:03/06/30 12:36 ID:???
>>930
レスさんくすでつ。
HOGE内にはユーザーIDをあらわす数字があって、
実はその数字に1をたして次に登録する人のID番号に
したいんでつ。おながいします。
932ショシンシャ:03/06/30 12:40 ID:???
$sql_id = "SELECT * FROM test WHERE HOGE??";//ケツの番号
$id = $sql_id + 1;
$insert = mysql_query("INSERT INTO membertbl VALUES ($id,$passwd,....

みたいなかんじでつ。
933ショシンシャ:03/06/30 12:42 ID:???
ああぁ
3行目
$insert = mysql_query("INSERT INTO test VALUES ($id,$passwd,....
でした。

934nobodyさん:03/06/30 12:49 ID:???
DB板行ってる?
935nobodyさん:03/06/30 12:49 ID:???
>ユーザーIDをあらわす数字があって、実はその数字に1をたして次に登録する人のID番号に
したいんでつ

そのユーザーIDはユニークで、新規登録者に今まで使ってたID+1の
IDを使わせるってことだよね??
idフィールドをauto incrementにするんじゃだめなの?
936nobodyさん:03/06/30 12:52 ID:???
>今まで使ってたID
今まで使ってた一番大きな数のID
937nobodyさん:03/06/30 14:03 ID:???
IDというフィールドを別に作れ。
938ショシンシャ:03/06/30 14:57 ID:???
レス有賀トン。
オートインクリメント!(・∀・)
さすがでつ。ありがとうごいますた。
939nobodyさん:03/07/06 21:31 ID:7NRYAhNq
PHP(4.3.2)+mysql(3.23.57)+phpMyAdmin(2.5.0)+win2000です
phpMyAdminからレコードの追加をすると、phpMyAdminのレコードが文字化けします。
mysql(dos窓)のselectで見ると正常です

色々しらべていじってみたけどわからないです。
↓関係ありそうなphp.iniの設定
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
↓my.iniの設定
[mysqld]
default-character-set=ujis
[mysql]
default-character-set=ujis
[mysql-dump]
default-character-set=ujis
phpMyAdminは(ja-euc)で表示させてます。
940nobodyさん:03/07/06 22:49 ID:???
全部はずして、ゆっくり考えてみろ。
941nobodyさん:03/07/07 01:38 ID:lhtnLc4P
>939
MySQLとPHPで基本としたい文字コードはなに?
942939:03/07/07 23:18 ID:???
>>940
mbstring.http_output = SJIS
をコメントアウトしたらOKでした

>>941
とりあえず出来たみたいです
レスありがとうございました
943山崎 渉:03/07/15 11:08 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
944nobodyさん:03/07/23 19:42 ID:c/+uzDLa
テーブルA
id b c
1 1 1
1 1 5
2 1 2
3 5 1
3 1 2
3 2 0

id b*c
1 6
2 2
3 7
と言った感じに 同IDのb*cを足した数を取得したいのですが

SELECT SUM(b*c) from A GROUP BY id
こう書くと
下のように同じIDのBが足された数に、同idの最後のcを掛けた数が返ってきます

id b*c
1 10
2 2
3 0

どこを直せば良いのか検討もつきません、誰か助けて
945944:03/07/23 20:23 ID:c/+uzDLa
>>944
自己解決しました。
946nobodyさん:03/08/10 03:00 ID:fzrQOeyO
webarenaのsuite2使ってるんですが、
サイトのipは*.*.*.100
なのに、
別鯖のmysqlにアクセスすると、ipが
*.*.*.2になります。
これはモジュール版だからでしょうか?
別のバーチャルホストのphpも*.*.*.2で走ってるとすると、
ちょっとセキュリティー的にどう? と思うのですが
(もちろんパスはかけていますが)
こんなものなのでしょうか。
947nobodyさん:03/08/18 00:26 ID:I4OY3KuJ
pconnectを使った方が効率が良くなるリクエスト数の目安みたいなものはありますか?
xreaで昨日pconnect使ってみたところ負荷が上昇したので…

デイリーアクセスが6000程度、リクエスト数が300000程度
リクエストの7〜8割がMysqlを利用するCGIです
948nobodyさん:03/09/02 11:46 ID:8zFi1SPw
自分のパソコンにサーバーソフトを入れて動作確認した結果と、レンタルサーバーにうpして動作確認した時とで、
違う検索結果が返ってくるのですが、何が原因なんでしょう?

レンタル鯖(PHP4.2.2 mysql3.23.46)
「なし」でLIKE演算子を利用して検索をかけた結果、「なし」「にし」「すし」が検索結果として返ってくる

自分のパソコン(PHP4.2.3 mysql4.0.5)
「なし」でLIKE演算子を利用して検索をかけた結果、「なし」のみが返ってくる

文字コードは全てEUC、mysqlのdefault-character-setはどちらもujisです。
わかる方いらっしゃったらよろしくおながいします。
949nobodyさん:03/09/02 14:51 ID:oASbZti5
phpMyAdminの使い方がわからない・・・(´Д`)
どこかにいいマニュアルありませんか?
探したんだけどサパーリです。(´・ω・`)
950nobodyさん:03/09/02 18:50 ID:???
>>949
MySQLのマニュアル調べた方が手っ取り早いです。
951nobodyさん:03/09/02 22:19 ID:???
>>949
GUIなんだから適当にいじって覚えろ。
日本語訳がめちゃくちゃなことを頭の片隅においておくと吉。
952nobodyさん:03/09/03 01:45 ID:???
>>948
どうすれば良いかということなら、
"BINARY"付けて比較しる!
(MySQLのMLの過去ログ等参照)

>>949
「MySQL徹底活用」に、それなりに載ってたかな。
もっと簡単部類のMySQLな本で書いてあるのも見た気がするけど。
953nobodyさん:03/09/03 09:41 ID:???
ありがとうございます。MLの過去ログ漁って探してみます。
954953:03/09/03 09:42 ID:???
>>953>>952に対するお礼です。
955nobodyさん:03/09/04 11:46 ID:???
リモートホストのことでは
956nobodyさん:03/09/14 01:00 ID:SxMgLT7D
今掲示板を作っています。発言ランキングを作ろうと思ってます。
`name`フィールドに名前を記録しているのですが、
これを動的にランキングとして生成したいのです。
どのようなロジックにすればいいのでしょうか。
957nobodyさん:03/09/14 02:49 ID:???
>>956
頻度集計ってSQLで一発で取ってこれるのかな?
良く判らないので私ならnameフィールドについて全件取ってきた結果を
スクリプトで個々にカウントして、それをソートして必要な上位件数を抽出します。

ランキングを出すことが頻繁でスピードが欲しいなら逐一集計するより、
nameフィールドに入れる値で分類したフィールドをもつテーブルを用意しておき、
発言する度に発言数を1増加。必要なら発言取り消しで1減少。
上位集計は発言数でORDERかけてLIMITで、必要な上位項目を制限して取り出す。
958nobodyさん:03/09/14 03:00 ID:4aTBFeIT
>>956
そのランキングをBBS本体とは別のページに常に表示させておくような
場合は957さんが書いてくれているやり方のほうがいいと思うけど、
SELECT name, COUNT(*) FROM name_of_table GROUP BY name
でいけるはず。
959957:03/09/14 03:00 ID:???
ああ、ここはMySQL+PHPスレか。
ならnameの内容をkey項目にしたarrayを作って、全件取った結果を使い
nameの値に対応するarrayのvalueをカウントアップしていけば集計が出来る。
で、arsortを数値オプション付きで掛ける。
960nobodyさん:03/09/14 03:01 ID:???
sage忘れスマソ。
>>956 追記。この板はsage推奨。
961nobodyさん:03/09/14 08:13 ID:???
>>960
「このスレッド」の間違いか?
962nobodyさん:03/09/15 13:21 ID:3OfqCmu9
>>957さん >>958さん
おへんじありがとうございます!
COUNT()なんてものがあったのですね。
MySQLのリファレンス見て、自分なりにアレンジして、

$sql = "SELECT `name`, COUNT(`name`) FROM `$db_table` GROUP BY `name` ORDER BY 'COUNT(`name`)' DESC;";

でできました!!
でもこれだと名前がローマ字のばやい大文字も小文字もいっしょくたにされてしまう・・・
963nobodyさん:03/09/15 13:31 ID:???
BINARY
964956:03/09/15 23:06 ID:A4TTummz
>>963さん
重ねx2さんくす!!
またまたリファレンスを検索してヒットしました。
表示タイプをバイナリにすればよいのですね!
スクリプト修正してないのに、しっかり区別できました。
さんくす いん あどばんす!!
965nobodyさん:03/09/18 02:18 ID:???
よく聞け!喪前ら!!!

前日アクセス数、本日アクセス数、トータルアクセス数をゲットするカウンターをPHP+MySQLで作ってください。

どうかお願いします。

966nobodyさん:03/09/18 08:48 ID:???
何故にカウンターごときでMySQL使う?
967nobodyさん:03/09/18 12:06 ID:???
>966
将来的にログとってアナライズする機能を拡張する目論見があるからでは。
でもそういうやつは「作ってください」なんていっちゃだめ。
他人に言う言葉なら「売ってください」はありだけど
968nobodyさん:03/09/18 16:37 ID:???
>>965
select count(*) from log
969nobodyさん:03/09/18 16:40 ID:???
>>968
それじゃトータルだけやん

select count(*) as total,
count(case when access_date = '今日の日付' then 1 else null end) as today,
count(case when access_date = '昨日の日付' then 1 else null end) as yesterday
from log

ってするんかな、ログを兼ねるなら。
970avx:03/09/21 00:10 ID:???
>>965

これ結構便利ですよ
http://www.phpopentracker.de/
971nobodyさん:03/09/26 02:55 ID:prC9hqpx
一度に15万件ぐらいのレコードをループしながらInsertさせたいのですが
2万から3万件ぐらいでエラーが出るでもなく止まってしまいます。

最初は実行時間が足りなかったようなので(これはエラーが出ました)
php.iniのmax_execution_timeを上げました。
memory_limitも念のため上げました。
mysql_connectが駄目だったのでmysql_pconnectも使ってみましたが駄目でした。

何がいけないのでしょうか。どなたか教えてください。お願いします。
972nobodyさん:03/09/26 10:22 ID:???
ブラウザから実行してんの?
定期的に文字出力してないと切られて止まっちゃうと思う
973971:03/09/26 10:48 ID:prC9hqpx
ブラウザから実行し、文字も定期的に出力しているんですが
途中で止まってしまいます。
974nobodyさん:03/09/26 11:20 ID:???
んじゃ、webサーバの設定はどうかな?
もしApacheなら、httpd.confのTimeoutとか
975971:03/09/26 12:27 ID:???
>>974さん、ありがとうございます。解決しました。
WEBサーバのTimeoutではなく、(言いづらいのですが)WEBサーバの
再起動がしっかりできてなかったみたいです。

なぜ再起動せずmax_execution_timeの設定も反映されていないのに
ブラウザにタイムアウトのエラーメッセージが出なくなったのかは???です。
出たり出なかったりするんでしょうか。

もう一回、ありがとうございました。
976nobodyさん
age