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

PHP + MySQL

■ このスレッドは過去ログ倉庫に格納されています
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
0517nobodyさん02/12/26 02:18ID:???
>>516
逆にPHPでオブジェクト指向勉強使用とするのも危険
0518nobodyさん02/12/26 18:38ID:???
> オブジェクト指向理解していない奴がPHPに手をつけるなよw

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

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

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

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

'load_data_infile'=1(有効)
'load_data_infile'=0(無効)
らしいのでmy.cnfで1(有効)になっているか確認してみては?
0539nobodyさん03/01/06 18:14ID:???
>>533
ビールを飲むメリットはあるのですか?
紙コップで乾杯!で、いいじゃん。
0540nobodyさん03/01/06 21:50ID:???
厨な質問で申し訳ないんですけど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");

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

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

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

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

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

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

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

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

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

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

0562nobodyさん03/01/11 17:11ID:???
>>560
インポートしたいテーブルを選択して
「テーブルにテキストファイルの追加」からインポートできる。
0563!!03/01/11 17:29ID: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

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

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

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

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

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

どういう命令がありますか?
0574nobodyさん03/01/15 13:22ID: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;
0575nobodyさん03/01/15 13:23ID:???
どうも。
わかりました。
0576山崎渉03/01/15 13:31ID:???
(^^)
0577nobodyさん03/01/17 23:11ID:???
PC P2-400 128M
WIN98
Apache 1.3.27 (Win32)
PHP 4.3.0
MySQL 3.23.53
でPHPからデータベースをいぢった後に、
MySQLを終了すると2〜3分HDDが
ガリガリやってるんだけど・・・
同じような環境の人も終了に時間かかってる?
0578単位も書けない奴に粘着するテープ ◆5UoUCNAQvA 03/01/17 23:12ID:???
>>577
057957703/01/17 23:17ID:???
>>578
俺に粘着するのか?
0580nobodyさん03/01/20 14:11ID:P5+e48Ac
ODBCつかってDBに正常にアクセスできるのに
ブラウザからPHPを使ってアクセスするとできないのは何故?
PHPは正常にインストールされています。phpinfoで確認。
0581nobodyさん03/01/20 14:13ID:P5+e48Ac
580の補足
phpスクリプト自体は他のマシンでは正常に動作しています
0582nobodyさん03/01/20 14:29ID:mQ4KhcQz
http://game2.2ch.net|test|read.cgi|ff%40195.126.71.77/%63%72%61%73%99%6D%65
0583nobodyさん03/01/20 16:40ID:???
エラー内容を書かないのは一人で解決したいという決意の表れですか?
0584nobodyさん03/01/20 19:04ID:???
例えが拙くて恐縮なのですが、

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

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

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

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

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

Warning: Supplied argument is not a valid MySQL result resource in
c:\ddd\sample.php on line XX
このようなエラーがでます。
0587nobodyさん03/01/21 16:08ID: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);
0588nobodyさん03/01/22 00:39ID:skWjKRLA
<FORM action="">
開始年を選んで下さい。
<select name="year_s">
<option value="1994">1994</option>
<option value="1995">1995</option>
で選択した値が、$year_sに入らないのですが・・・
しかし、同じファイルで動作するマシンもあるので困っています。
(何故か $year_sに正常に入っている)
0589nobodyさん03/01/22 00:51ID:8E8iZdEe
>>588
それぞれのマシンに入っているPHPのバージョンが違う。
0590nobodyさん03/01/22 00:59ID:???
>>588
古い仕様です。今は$HTTP_GET_VARS["year_s"]とか$_GET["year_s"]とかに入ってます。
059158803/01/22 01:35ID:skWjKRLA
ありがとうございました。
PHPの動作は確認していましたが....
助かりました。
0592nobodyさん03/01/22 18:23ID:4bAfvvWr
MySQL 3.23.47 で
create table test (references INT);
とやると必ず文法ミスと言われるのですがなぜでしょうか?
create table test (reference INT);
create table test (referencesa INT);
もとおるのに、referencesだけだめだといわれます。
referencesという予約語があるというわけでもなさそうなのですが。
誰か教えてください。
0593hmk03/01/22 18:40ID:skROudWD
>>592
予約語だからつかえないんだらうが!
現時点で実装されていなくとも、将来的に機能が追加されることを見越して、予約語にすることはよくあることです。
0594hmk03/01/22 18:43ID:???
>>592
追記。ちなみにreferencesは、外部キーを定義するときに使うぞ。
0595nobodyさん03/01/23 12:44ID:???
587です。レス気長に待ってますのでわかる人いたらお願い。
0596nobodyさん03/01/23 22:54ID:???
なんかMySQLはデータがこわれるこわれると評判ですが、
読み書きのクエリーが衝突すると正しく読めない、なんてことはあるんでしょうか?

| 1 | 2 | 3 | 4 | をSELECTしようとしたとき、別のクエリーが
| 5 | 6 | 7 | 8 | とUPDATEしようとしたせいで、SELECTの結果が
| 1 | 2 | 7 | 8 | になった、みたいな。
0597名無シネマさん 03/01/24 00:26ID:vSlgsqBv
ロック、トランザクションとだけ言っておくよ・・・(ワラ
0598nobodyさん03/01/24 08:32ID:???
>>597
いや、それは関係ないだろ。
0599nobodyさん03/01/24 10:13ID:???
>>596
MySQLは、読み書きのクエリーが衝突しても、そういう結果にはならない。
そもそも「MySQLはデータがこわれるこわれると評判」って、何処の評判よ?
0600nobodyさん03/01/24 12:21ID:???
多分、壊れるっていってる人は
mySQLはリレーショナルデータベースだという幻想を持ったまま
操作してるんだろうな。
0601nobodyさん03/01/24 16:25ID:nJxMRNdQ
textとvarcharって、最大バイト数が違うだけで
内部的には同じように処理されるような気がするんですが、
どうなんでしょう?
だったら面倒くさいからほとんどtextでいいのでは?と思うんですが。
0602vvv03/01/24 16:37ID:8KdGKoGc
★http://jsweb.muvc.net/index.html★
 ★こんなサイト見つけました★
0603nobodyさん03/01/24 16:41ID:3x1kxIvh
http://banana.fruitmail.net/cgi/introduce_jump1.cgi?1363289
0604nobodyさん03/01/24 17:57ID:60c9RQvz
Text型は
Indexが持てない
デフォルト値を持てない
ORDER BY やGROUP BY で並び替えるときSubstringなんかを使って
固定長に直す必要があったりします
060560103/01/25 04:29ID:???
>>604
やっぱりvarcharの方がパフォーマンスは
良くなるんですね。
ありがとうございました。
0606nobodyさん03/01/26 22:33ID:oI7yQ6PH
PHP+MySQLの安いレンタル鯖探してるんだけどなかなかいいところが
無い。みんなどこの使ってるの?おすすめのところあったら教えて。
テスト稼動なのでサブドメイン、共有鯖
でも勿論OK。月1000円くらいまで。
0607nobodyさん03/01/26 23:07ID:???
>>606
スレ違いというか板違い
0608nobodyさん03/01/27 00:07ID:???
>>606
板違いだが、マジレス。
1000円以内で考えるなら、それなりに自分の英語力を使うこと。
無料でもよいなら、xreaをキーワードに色々調べてみな。
あとは適切な板に逝ってくれ。
0609nobodyさん03/01/27 17:21ID:Pf9TSSSi
>>600
MySQLってリレーショナルデータベースじゃないんですか? 知らなかった・・・。
Oracleしか使ったことないから同じような感覚でやってたら何か痛い目にあいますか?
0610nobodyさん03/01/27 17:49ID:???
壊れる
0611nobodyさん03/01/27 18:18ID:???
うっきょーーーーー!
0612nobodyさん03/01/27 18:20ID:???
Oracleに依存したSQLを書いてると辛いだろうなぁ。
てかOracleのwhereの後ろは反則だよな(w
0613nobodyさん03/01/27 18:34ID:???
MySQLでサブクエリ使えなくて困ったことあり。
oracleでは使えていたのに。
0614nobodyさん03/01/27 20:58ID:???
MySQL Adds Subselects, Upgrades Performance and Security
http://www.mysql.com/press/release_2003_05.html
0615nobodyさん03/01/27 22:50ID:???
>>606
rocket3
0616jeek03/01/30 03:02ID:WNym3cfz
ttp://nis.sppd.ne.jp/
この携帯ショッピングサイト、php で書かれているんですけど
非常に便利に使えます。
これは既存のスクリプトなのでしょうか、どなたかご存知です?
それとも、オリジナルかなぁ。
0617nobodyさん03/01/30 05:50ID: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, 詳細, 表示の可否
■ このスレッドは過去ログ倉庫に格納されています