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

PHP + MySQL

■ このスレッドは過去ログ倉庫に格納されています
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
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
インタプリタだからね。
078503/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)
0788nobodyさん03/05/08 20:23ID:YPfgT5kA
共有レンタルサーバではMySQLのユーザ権限の設定するのって不可能??


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

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

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

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

もしよろしかったら、ご指導お願いいたします。
0799_03/05/18 06:26ID:???
  ∧_∧    http://togoshi.ginza.st/mona/
 ( ・∀・)/< こんなもの見つけたっち♪
http://togoshi.ginza.st/mona/mona10.html
http://www.togoshi.ginza.st/mona/mona08.html
http://togoshi.ginza.st/mona/mona05.html
http://www.togoshi.ginza.st/mona/monaz07.html
http://togoshi.ginza.st/mona/mona06.html
http://www.togoshi.ginza.st/mona/mona02.html
http://togoshi.ginza.st/mona/mona04.html
http://www.togoshi.ginza.st/mona/mona03.html
http://togoshi.ginza.st/mona/mona01.html
http://www.togoshi.ginza.st/mona/mona09.html
0800nobodyさん03/05/18 06:50ID:???
>798
負荷により不可。
080179803/05/18 07:04ID:???
すみません。書き忘れました。
個人的な利用を考えています。

公開できればもっと良いと考えていますが、とりあえずは一人用のものが
できれば・・と考えています。
0802bloom03/05/18 07:08ID:rGbr42DC
http://homepage.mac.com/ayaya16/
■ このスレッドは過去ログ倉庫に格納されています