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

PHP + MySQL

■ このスレッドは過去ログ倉庫に格納されています
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
0442nobodyさん02/11/28 12:31ID:+5GONPaT
質問です。
レコードの数字部分の最小の値を得たいのです。
例えば
AB-001
AB-002
AB-003
ならばAB-004を
AB-002
AB-001
AB-100
ならばAB-100を
得るようにしたいのですが、どのようにしたらよいでしょうか?
AB-001から順番に調べていくのでしょうか?
スマートな方法があればうれしいです。
宜しくお願いします。
0443nobodyさん02/11/28 14:47ID:???
ワケワカラン。

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

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

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

文字列レコード(primary keyを指定しています)
の数字部分の使用されていない最小の値を得たいのです。
例えば
AB-001
AB-002
AB-003
ならばAB-004を
AB-002
AB-001
AB-100
ならばAB-003を得たいです。
0445nobodyさん02/11/28 15:21ID:+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;

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

テーブル設計をみなおす
0447nobodyさん02/11/29 23:10ID:kyVi4Psy
ウェブ上からmysqlに登録できなくなったので、
調べてみると、
telnetで直接insertしようとしても、えんえん待たされる状態になりました。
同じdatabaseの他のtableにはinsertできるのですが…。
これはどのような原因が考えられますか?
044844702/11/29 23:47ID:kyVi4Psy
deleteも待たされてできません。
selectは出来ますが、
telnetでeucの日本語が文字化けするので
ちゃんとできているのかはいまいち分かりません。
ロックはかけてませんが、テーブルが壊れることはない、
と過去ログにはあるし…なんなんでしょう?
0449nobodyさん02/11/30 02:11ID:???
>>447
よく解らないけどmyisamchkコマンドを試してみたら?
045044702/11/30 02:33ID:???
>>449
レスありがとうございます。
なんとも不可解だったのですが、
MySQLもインストールしてある/usrが
Apacheのログで100%Usedになっていたのが原因でした。
おさわがせいたしますた。
0451nobodyさん02/11/30 08:11ID:67+5Hznc
「テメーらここで質問する前にこのサイトくらい見とけよ(w」
みたいなPHP + MySQLの初心者向けのサイト教えてください。
0452nobodyさん02/11/30 12:17ID:jN+HZDrE

MySQLの導入
http://www.rfs.jp/server/mysql/index.html

PHP/MySQLチュートリアル
http://www.hotwired.co.jp/webmonkey/programming/php/tutorials/tutorial4.html

PHPマニュアル
http://www.php.net/manual/ja/
0453nobodyさん02/12/01 18:22ID:???
Win32 + Apache + PHP + MySQL の環境で、MySQL を使う PHP スクリプトを使っておられる方っていませんか?
例えばアクセス解析スクリプトとか。
というのも、当方が使ってる解析スクリプトは Les Visiteurs なんですが、解析表示で MySQL の CPU 使用率が百パーセント近くになってしまうんです。
Win32 で MySQL をお使いの方、貴殿のマシンではどうですか?
0454nobodyさん02/12/02 15:37ID:???
>>446
自己レスです。
とりあえずprefixはテーブルの外に出して番号だけを入れるようにしました。
で、全検索しますた。お騒がせしました。

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

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

相場はどのくらいよ?みんな自鯖なわけ?
0464nobodyさん02/12/09 05:46ID:vvvONNMO
携帯用コンテンツを作っています。
携帯はEUCじゃないんで、少し気になったのですが、
MySQLに入れる文字列、S-JISで問題ないですか?
046546402/12/09 05:53ID:vvvONNMO
過去ログみたら、問題ありっぽいですね。
EUCにしてからDBに入れる、
取り出してからSJISに変換…というやり方でいいのでしょうか?
0466nobodyさん02/12/10 00:57ID:ZDH4nUde
>>465
たぶん正解。あとでトラブりたくないならそれがベストでしょう。
0467nobodyさん02/12/10 21:21ID: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"と"????"の場所には
何を記述すれば良いのでしょうか?
0468nobodyさん02/12/10 21:45ID:???
     ∧∧   ミ ._ サクッ
     (   ,,)┌─┴┴─┐
     /   つ. 厨房警報 |
  〜′ /´ └─┬┬─┘
    ∪ ∪     ││ _ε3
゛゛゛'゛゛'゛゛'゛'゛゛'゛'゛゛゛゛'゛゛゛'゛゛
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
癖をつけておくと余計なトラブルを回避できていいかも
あんまり変わらないけど
■ このスレッドは過去ログ倉庫に格納されています