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

PHP + MySQL

■ このスレッドは過去ログ倉庫に格納されています
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
064463903/02/03 00:13ID:4TYvio9L
>640 ありがとうございます。一度はあきらめていました。しかし。

$q = 'mysqldump --password=PASS -u USER DB > DB.sql';
system($q);
上記をPHPで実行してもバックアップが成功しませんでした。
まったく同じコマンド($q)をTELNETで実行すればうまくいくのですが…。
0645nobodyさん03/02/03 02:02ID:???
>>643
>>642とは別人だけど、色々なデータを纏めたい時ってどうするの?

Monster | Item | Gold | EXP

とかいう風に分かれているとき、
Itemのために何行も書くとGoldやEXPのところが重複しない?
似たようなことやろうと思ってるんだけど、DBは初めてなのでそのあたりの事がさっぱり…。
0646nobodyさん03/02/03 02:02ID:jEwc5dws
>>644
検証してないので適当に答えてみるテスト。
$q = 'mysqldump --password=PASS -u USER DB > DB.sql';
system($q);
↓
$q = '/usr/local/mysql/bin/mysqldump --password=PASS -u USER DB > /home/2channeler/DB.sql';
system($q);
0647nobodyさん03/02/03 02:07ID:jEwc5dws
>>645
そこらへんは 1対1 か 1対多 か 多対多 で変わってくる。

MonsterNo | Monster | Gold | EXP
1 スライム 2 1
2 ドラキー 4 3

MonsterNo | ItemNo
1 1
2 1
2 2
2 3

ItemNo | Item
1 やくそう
2 かわのふく
3 ロトのつるぎ
0648nobodyさん03/02/03 02:10ID:???
すいません。書き直し。

MonsterNo | Monster | Gold | EXP
1         スライム   2    1
2         ドラキー   4    3

MonsterNo | ItemNo
1         1
2         1
2         2
2         3

ItemNo | Item
1      やくそう
2      かわのふく
3      ロトのつるぎ
0649かわのふく→ぬののふく?03/02/03 02:15ID:???
なんと。ドラキーがロトのつるぎを持っていたとは。。
0650nobodyさん03/02/03 02:25ID:???
なるほど、参考にしてやってみます。
065163903/02/03 07:06ID:4TYvio9L
>646 ありがとうございます。以下で試しましたがダメですた。
$q = '/usr/local/bin/mysqldump --password=PASS -u USER DB > /home/USER/DB.sql';
system($q);

なお、TELNETで以下のようなパスを得ました。
% which mysqldump
/usr/local/bin/mysqldump

レンタルサーバー会社によれば、ユーザーディレクトリは以下です。
/home/USER/
0652nobodyさん03/02/04 02:21ID:zZmUIE3R
なんでphpMyAdmin入れないの?
0653nobodyさん03/02/04 17:15ID:jR3/RqTl
PHP+MYSQLでひらがなでDBから検索するページを作ったのですが、
一部の文字が条件と一致していないのに出てしまいます。

これってどういうことなんでしょうか?
0654nobodyさん03/02/04 18:02ID:???
MySQLはそれで合ってるって思ってるんだよ。
php.iniで指定してる文字コードとMySQLで使ってる文字コードと
一部の文字と条件を調べてみんしゃい。
065563903/02/04 19:45ID:A1NhCJKb
バックアップとるためだけにphpMyAdmin使うのはちょっと…
すみません、レンタルサーバー会社にも問い合わせてみます。

>653
わたしも同様の現象を体験しています。
>654のいうとおりで、特に文字数が少ない場合、
文字コードが一致する偶然が起きやすくなります。
わたしはそれほど気にならないのであきらめていますが、
いい対処法はあるのでしょうか。
0656nobodyさん03/02/05 09:07ID:???
>>653
1.文字コードはEUCを使う。
/etc/my.cnf の中に
[mysqld]
default-character-set=ujis

2.バイナリ比較する
WHERE BINARY name = 'あ'
0657nobodyさん03/02/05 16:51ID:lVHnu0B4
>>656
携帯でも検索かけて表示できるページにしたいのです。
SJISでは無理なのでしょうか?
PHPで直そうと思ったのですが、上手くいかないので
065863903/02/05 18:43ID:rzvQR9Wx
内部的な処理はすべてEUCで行って、表示の時だけSJISに変換すればいいですよ。
$moji = mb_convert_encoding($moji,'SJIS','auto');
0659nobodyさん03/02/05 20:56ID:???
MySQL は SJIS にも対応しております。
お使いのバージョンでは分かりませんけど。
0660nobodyさん03/02/05 21:19ID:iZbItlvM
my.iniの設定をしっかりとすればSJISでも大丈夫。

[mysqld]
default-character-set=sjis

[mysqld]
default-character-set=sjis
0661nobodyさん03/02/05 21:38ID:???
激しく既出だったらスマソ

mysql_fetch_array(): supplied argument is not a valid MySQL result resource in pagename on line xx

どうすればなおりますか?
0662nobodyさん03/02/05 22:03ID:???
あんさんがわてにくれはったレザルトリソース?とかゆーやつが変やねん
ってゆってはります。
きちんとMySQLにコネクトできてないのに結果をせっかちに要求したか
ぜんぜん関係ない変数を渡してはりませんか?
0663nobodyさん03/02/05 22:23ID:???
PHP絡んでないのでスレ違いなのかもしれませんが他に見つからないので…
ゲームやっている人ならわかると思いますが、下の例は経験値表です。

このような表で、BaseEXPはLv51以上も数値があるがJobEXPは50までしかない場合、
BaseEXPとJobEXPでテーブルを分けるか、空いた部分は全てNULLをいれて置くか、
設計(というほど大したものではないけど…)としてはどちらの方が良いでしょうか?

Lv | BaseEXP | JobEXP
-----------------------
2 |   1   | 1
3 |   4   | 2
...
51|  555   | NULL
0664nobodyさん03/02/05 22:26ID:???
>>663
なんか日本語がバグってるぞ。
0665nobodyさん03/02/06 00:10ID:???
>>663
NULLでいいんじゃない?
どっちでも大差なさそうだし
テーブル1コ少ないほうが管理がラク。
0666gn355my003/02/06 00:20ID:???
つーか、DBにするほどのもんか?
何に使うのか問い詰めてもいい?
0667nobodyさん03/02/06 01:19ID:???
なるほど…ならとりあえず現状のままで。

>>666
とあるゲームのデータベースでも作ってみようかなーと。
丁度DBに興味湧いてきたところなので、勉強がてらに。
で先に書いたようなテーブル作っている時にふとこういうやり方ってどうなのかな?と疑問に思ったわけなのです。
0668gn355my003/02/06 02:01ID:???
>>667
いや、それはわかる。ただいま巻き戻り中のやつやろ?
じゃなくてそれを何に使うのかなと思って。
ほぼ100%参照だけだし、データ量もそれほどないし。
まぁ勉強がてらということだし口を出すこっちゃないやね。
0669nobodyさん03/02/06 03:44ID:???
んー、別に世の中に公表するとかそういうのではないのですよね。
勉強というか学習と言うか、ちょっとやってみたいなーとかいう風に考えてるだけなのであまり深いツッコミは何とも。
それにまあ、利便性とか実用性とかではなくて、
DB使ってデータ管理するのも面白そうだなーとかそういう単純なノリも多分にあったりします。
言い方は悪いかもしれませんがオモチャ扱っているような感じ。
#どうせローカルだし

そちらの言うとおりデータは殆ど参照しかしないから、
データを読むと言う事だけを考えれば実用性だけならHTMLを使ってテーブルやリスト使っても十分だし、
PerlとかPHPとかはたまたJavaScriptで計算機組むにしても、
例えばCSV形式のファイルでも一つ用意すればそれはそれで良いと言うのは承知しているつもりです。

まあ、そういうわけなのです。
0670gn355my003/02/06 09:17ID:???
>>669
あ、ごめんごめん。責めたりしたわけではないです。
問い詰めるという2ちゃん的表現がよくなかったかな。
単に何か面白いことやってくれるのかなー
便利そうなんだったら漏れも使わせてもらおうかなー
と思っただけっす。オモチャ上等だと思いますよ。
というわけでスレ汚しスマソ
0671nobodyさん03/02/06 11:49ID:???
でも、DBつかうと絞り込み検索とか出来て楽なんじゃないかな〜とか思ってみたり

ところで、PHP質問スレッドの7は?
0672nobodyさん03/02/06 17:00ID:K8RgyZce
postgresの場合、
field01〜03が'猿'を含むレコードを選択
select * from Sample where field01 || field02 || file03 ~ '猿'
でできますが、
MySQLで同じ事をするにはどうすればいいのでつか?
0673nobodyさん03/02/06 19:39ID:kbkaq7Bp
auto_incrementで主キーを自動的に振っているのですが、
今新たにデータを挿入したいとして、そこに振られる主キーを取得する
いい方法はあるでしょうか?
0674nobodyさん03/02/06 22:35ID:???
>>673
mysql_insert_id() じゃダメかのぉ
0675nobodyさん03/02/07 09:34ID:???
>>674
多謝
0676nobodyさん03/02/07 23:21ID:???
ERROR 1006: Can't create database 'hoge_db''. (errno: 13)

って何のエラー?
rootでやってるんだけどデータベース作れない…。
0677nobodyさん03/02/07 23:21ID:qy2BS4yt
あげ忘れ
067867603/02/07 23:25ID:???
ゴメソ。パーミッションの問題だった…。逝ってきます。
0679daad03/02/07 23:53ID:???
http://abon.slyip.com:8080/php/
0680nobodyさん03/02/08 16:39ID:7Sg+8jhN
.
.
.

$sql = "SELECT * FROM test_tbl ORDER BY id DESC";
$res = mysql_query($sql, $conn) or die("データ抽出エラー");

while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td><font size=-1>".$row["g_id"]."</font></td>";
echo "<td><font size=-1>".$row["g_goods"]."</font></td>";
echo "</tr>";
}
.
.
.

でやってしまうと、DBに登録された順序で表示されてしまいます。
表示する前にMyspl抽出したデータ"g_id"を昇順 or 降順でソートしてやりたいのですが...
sort rsort ksort krsortは配列のみに有効でしょうか? このケースでも有効ならどのようにソートしてやればよいでしょうか?

もしくはMysplの関数でソートできるものがありますか?
ご教示願います。

Win2000 PHP 4.2.2 Mysql3.23.51
0681nobodyさん03/02/08 16:42ID:CaCRikEO
>>1
http://homepage3.nifty.com/digikei/
全部無料だよ
0682nobodyさん03/02/08 17:05ID:???
>>680
ORDER BY id DESC
0683nobodyさん03/02/08 23:27ID:???
>>680
ORDER BY g_id [A|DE]SC
0684nobodyさん03/02/09 21:29ID:JGZZ388l
ミッション・クリティカルって、どういう意味?
0685nobodyさん03/02/09 21:35ID:???
>>684
なお、失敗は許されない。
0686nobodyさん03/02/10 19:54ID:???
「なお」?
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文は結局書き分けなければ逝けない罠
■ このスレッドは過去ログ倉庫に格納されています