トップページ⇒php
949コメント332KB

PHP + MySQL

■ このスレッドは過去ログ倉庫に格納されています
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
0687nobodyさん03/02/10 21:01ID:???
>>686
当局は一切関知しないからそのつもりで。
0688nobodyさん03/02/10 21:56ID:???
Σ(゚Д゚;;;)
0689nobodyさん03/02/10 23:11ID:???
>>688
なお、このテープは自動的に消滅する。
0690nobodyさん03/02/11 02:01ID:???
         .┌┐
        / /
      ./ / i
      | ( ゚Д゚) <・・・・・・・・・
      |(ノi  |)
      |  i  i
      \_ヽ_,ゝ
        U" U
0691nobodyさん03/02/11 02:09ID:???
 おまいら、一体歳いくつなんだ(笑)
0692nobodyさん03/02/12 12:16ID:???
バイオミック・ジェミーのモノマネ! とかいって
スローモーションで走ってた世代
0693nobodyさん03/02/12 15:04ID:???
知らねー!
0694nobodyさん03/02/12 15:40ID:???
漏れはムーンウォークだな。。
0695nobodyさん03/02/12 22:59ID:???
うーパールーパー見たことがあります。
0696nobodyさん03/02/13 00:00ID:ZKwcH9W1
上の方でMySQLはリレーショナルデータベースではないみたいな話あったのですが、どのくらいの事するとまずいんでしょうか?
表を5個くらい並べてSELECTかけるとかは問題ないでしょうか?
0697nobodyさん03/02/13 00:46ID:???
>>696
SELECTだけなら問題おきない。

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

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

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

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

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

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

わかってるなら来ないでくださいよ・・・
0718nobodyさん03/03/04 02:51ID:???
>>716
質問の意味がいまいちよくわからんが、
PHPとMySQLが使いたいなら、使えるかどうか確認すりゃいいんじゃないの。
0719ただいま仕事中03/03/06 04:19ID: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も必要なの?
0720ただいま仕事中03/03/06 04:23ID:cPlNSv+N
SELECT * FROM テーブル名 ORDER BY no DESC LIMIT 0,1;
LIMITが抜けてました....ネムイ
072171303/03/06 09:24ID:???
おはよーございます。
uid毎にnoが最大値のものが欲しかったものでして。。。
uidが1でnoが最大値のtitle、
uidが2でnoが最大値のtitle
| |
uidがxxでnoが最大値のtitle…以下uidの分だけ続く

まずuidがいくつあるか(同じuidを除いて)調べて、
それからuid毎に720さんのSELECTかまさないと
いけないみたいですね。
がんばろっ
0722ただいま仕事中03/03/06 13:53ID:i/SuKWBs
ども。これでどうですか?
SELECT uid,MAX(no),title FROM テーブル名 GROUP BY uid ORDER BY uid
0723 03/03/06 13:54ID:???
sagetokimasu
072471303/03/06 18:02ID:???
えと、それだと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";
}
みたいな感じで解決しました。
アドバイス下さった方々ありがとーございましたー
0725nobodyさん03/03/06 21:23ID:???
MySQL Studioの日本語版やっと出たね
板違いかもしれないけどMySQLって事で

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

マニュアル嫁や

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

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

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

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

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

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

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

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

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

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

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


0778nobodyさん03/04/26 18:40ID:???
>>777
ここがたいへん参考になる
http://www.phppatterns.com/index.php/article/articleview/25/1/1/
077977703/04/28 01:42ID:???
英語苦手だから全部は読めねえ・・・>>778

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

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

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

>>785
そういう関数があればと思ったのですがないですよね。
やっぱ自前で実装するしかないか・・・
0787nobodyさん03/05/04 01:06ID:???
>>780
ENCODE(str,pass_str)
DECODE(crypt_str,pass_str)
■ このスレッドは過去ログ倉庫に格納されています