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

PHP + MySQL

■ このスレッドは過去ログ倉庫に格納されています
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
0469nobodyさん02/12/10 22:16ID:nfrh3Eto
Windowsの場合、データベース操作は基本的にコマンドプロンプト(cmd.exe)上で行う。
ただ、データベース管理ソフト(PHPスクリプトではない)などを用いた場合はこの限りではない。
localhostの部分は、貴方のマシン上でデータベースが走っていれば変えなくてもいい。
rootは貴方が前もって作成した自分のユーザー名、????はそのパスワード。

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

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

http://www.agemasukudasai.com/bloom/
0479質問です02/12/11 17:02ID:???
>>477
ありがとうございます!

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

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

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

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

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

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

とりあえず、データを挿入するときに、別の場所に挿入した行数を保存することで
対処しようかと思います。
0495nobodyさん02/12/15 03:21ID:???
$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 ) ;
とメモリを開放してやること。

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

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

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

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

結構楽かも。
0499 02/12/17 22:48ID:???
http://www2a.kagoya.net/~adults-toybox/sample1.wmv
http://www2a.kagoya.net/~adults-toybox/sample2.wmv
http://www2a.kagoya.net/~adults-toybox/
0500nobodyさん02/12/17 23:01ID:???
500get!
0501nobodyさん02/12/17 23:53ID:???
>>498
嬉しいのは分かるがphpdevの説明ぐらいしてください。
「phpdevとは、Windowsに PHP、MySQL、Apache、 (PERL)などをインストールするパッケージです」
>>500
嬉しいのは分かるが、最後にズサーが抜けてます。
0502nobodyさん02/12/18 20:26ID: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} というのは何を意味しているのでしょうか。
申し訳ありませんがよろしくお願いします。
0503nobodyさん02/12/18 21:01ID:???
>>502
$d->$idでしょ
{}でくくってるのは墓石k
0504nobodyさん02/12/19 17:29ID:lzLv+VhC
>>502

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

中身は
select id from TW_click where url='$j' order by id desc limit 1
の結果。
0505nobodyさん02/12/19 18:25ID:???
>>504
> >>502
> $d->idというのは,$dというオブジェクトのidという変数のこと。
オブジェクトと言うより、インスタンスだよね
0506nobodyさん02/12/19 22:40ID:6CY601Q7
+-----+-------+
|名前  |持ち物 |
+-----+-------+
|A    |りんご  |
|     |バナナ |
+-----+-------+
|B    |みかん |
+-----+-------+
こういうのはどうやったらできるのでしょうか?
0507nobodyさん02/12/19 22:44ID:???
>>506
お前マジで参考書ぐらい買えよ
0508nobodyさん02/12/19 23:41ID:???
print<<<mona
+-----+-------+
|名前  |持ち物 |
+-----+-------+
|A    |りんご  |
|     |バナナ |
+-----+-------+
|B    |みかん |
+-----+-------+
mona;
0509nobodyさん02/12/20 01:14ID:???
>>506
俺はAscii Art Editorってのを使ってる。簡単にできるよ。
0510kodokuman02/12/20 15:22ID:???
http://www.matsuya-building.co.jp/testphp/backend.txt
↑上のソースはサーバーに載せてもエラーはでないのですが・・・
メール配信の方がされません!僕のは何が間違えてるかわからないんですけど、誰かわかりますか?
0511nobodyさん02/12/20 16:55ID:???
ちゃんと見てないけど、mail関数の"From: AuthMan"がマズイんじゃないの?
メールログ見れるなら、それ見れば即解決。
051250202/12/20 21:30ID:???
>>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
?(;´Д`)
ありがとうございました。
051350402/12/21 17:41ID:???
>>512
漏れもたいしてわかってないから安心しろ。
とりあえず使い方だけわかればそれでいいんではないだろうか。
0514nobodyさん02/12/24 21:38ID:Wt8tE8W2
PHP + MySQL + Apache + Windows でやってるんすけど、特定の文字
(2バイト目に"C5") で文字化けが起きるのはどうやったら回避できるん?
0515nobodyさん02/12/24 21:52ID:ISz3CA8u
文字コードをEUCにする
0516nobodyさん02/12/26 00:51ID:???
>>512-513
プププ
オブジェクト指向理解していない奴がPHPに手をつけるなよw
WEBプログラミングはCGIでC言語使ってやってろw
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
もう考えるまでも無く圧倒的な勢いを持って後者
インデックス次第では前者≒後者になりそうだけど
処理量はどうしようもなく必然的に大胆に前者≧後者
■ このスレッドは過去ログ倉庫に格納されています