PHP + MySQL
■ このスレッドは過去ログ倉庫に格納されています
0001ECY
NGNG0568nobodyさん
03/01/14 15:23ID:gMRBp+il100000000(1億)のレコードから
目的の1件のレコードをとってくるのと
10000のレコードをもつ10000テーブルのなかから
目的の1件のレコードをとってくるのとでは
どちらが早いですか?
実験したかったのですが1億のレコード挿入で
断念しました。。。
(10万,100万の時点でおそろしく時間がかかったため)
0569nobodyさん
03/01/14 19:12ID:???もう考えるまでも無く圧倒的な勢いを持って後者
インデックス次第では前者≒後者になりそうだけど
処理量はどうしようもなく必然的に大胆に前者≧後者
0570568
03/01/14 20:36ID:gMRBp+il設計的にはかなり冗長ですが(同じ構造のテーブルが多数)
やはり後者のテーブル設計を取ろうと思います。
不安だったのは、
前者
SELECT name FROM tableall WHERE id=34561234;
後者
SELECT name FROM table3456 WHERE id=1234;
としたときの後者の場合、
データベースが10000のテーブルの中から
table3456をみつけるのに時間がかかってしまうのか
どうかがわからなかったことです。
テーブルのなかのレコードを探す能力は最適化されてても
データベース内のテーブルを探す能力については
どうなのかなと。。。心配性&スキル不足ですまんです。
0571nobodyさん
03/01/14 20:51ID:???つーか、後者の速さは(アプリ側乃至SQL文とかストアドの)ロジック次第なのでは?
>>568
つーか、圧縮するロジックを考えるのが筋だと思うよ。
# 今のままだと、1個の物理ディスクに入らないかも知らん。
# そうであれば、バスの速度などにも禿げしく依存。
ただし、再発明しないようにね。
0572nobodyさん
03/01/15 06:59ID:???ひょっとして恐ろしくデカイのでは?
0573nobodyさん
03/01/15 12:50ID:a4fZ6czkselect * from mytable;
のように全部取得したいのですが、全部だと多すぎるので、20行ずつ取得したいのです。
つまり、掲示板などでの、前20件、次20件などのようにしたいのです。
どういう命令がありますか?
0574nobodyさん
03/01/15 13:22ID:i2Ml65czselect * 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:???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:???0580nobodyさん
03/01/20 14:11ID:P5+e48AcブラウザからPHPを使ってアクセスするとできないのは何故?
PHPは正常にインストールされています。phpinfoで確認。
0581nobodyさん
03/01/20 14:13ID:P5+e48Acphpスクリプト自体は他のマシンでは正常に動作しています
0582nobodyさん
03/01/20 14:29ID:mQ4KhcQz0583nobodyさん
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:???車No, 車名
1 かろーら
2 あるてっつあ
3 ぷりうす
部品No, 車No, 部品名
1 1 純正ナビ
2 1 スペアタイヤ
3 2 純正ナビ
4 2 スペアタイヤ
5 3 純正ナビ
6 3 スペアタイヤ
正規化すれば部品は増やし放題。
0586580
03/01/21 15:32ID:GpjCCUGlWarning: Supplied argument is not a valid MySQL result resource in
c:\ddd\sample.php on line XX
このようなエラーがでます。
0587nobodyさん
03/01/21 16:08ID:RteUDGxD例えばテーブル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開始年を選んで下さい。
<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それぞれのマシンに入っているPHPのバージョンが違う。
0591588
03/01/22 01:35ID:skWjKRLAPHPの動作は確認していましたが....
助かりました。
0592nobodyさん
03/01/22 18:23ID:4bAfvvWrcreate table test (references INT);
とやると必ず文法ミスと言われるのですがなぜでしょうか?
create table test (reference INT);
create table test (referencesa INT);
もとおるのに、referencesだけだめだといわれます。
referencesという予約語があるというわけでもなさそうなのですが。
誰か教えてください。
0593hmk
03/01/22 18:40ID:skROudWD予約語だからつかえないんだらうが!
現時点で実装されていなくとも、将来的に機能が追加されることを見越して、予約語にすることはよくあることです。
0595nobodyさん
03/01/23 12:44ID:???0596nobodyさん
03/01/23 22:54ID:???読み書きのクエリーが衝突すると正しく読めない、なんてことはあるんでしょうか?
| 1 | 2 | 3 | 4 | をSELECTしようとしたとき、別のクエリーが
| 5 | 6 | 7 | 8 | とUPDATEしようとしたせいで、SELECTの結果が
| 1 | 2 | 7 | 8 | になった、みたいな。
0597名無シネマさん
03/01/24 00:26ID:vSlgsqBv0599nobodyさん
03/01/24 10:13ID:???MySQLは、読み書きのクエリーが衝突しても、そういう結果にはならない。
そもそも「MySQLはデータがこわれるこわれると評判」って、何処の評判よ?
0600nobodyさん
03/01/24 12:21ID:???mySQLはリレーショナルデータベースだという幻想を持ったまま
操作してるんだろうな。
0601nobodyさん
03/01/24 16:25ID:nJxMRNdQ内部的には同じように処理されるような気がするんですが、
どうなんでしょう?
だったら面倒くさいからほとんどtextでいいのでは?と思うんですが。
0602vvv
03/01/24 16:37ID:8KdGKoGc★こんなサイト見つけました★
0603nobodyさん
03/01/24 16:41ID:3x1kxIvh0604nobodyさん
03/01/24 17:57ID:60c9RQvzIndexが持てない
デフォルト値を持てない
ORDER BY やGROUP BY で並び替えるときSubstringなんかを使って
固定長に直す必要があったりします
0606nobodyさん
03/01/26 22:33ID:oI7yQ6PH無い。みんなどこの使ってるの?おすすめのところあったら教えて。
テスト稼動なのでサブドメイン、共有鯖
でも勿論OK。月1000円くらいまで。
0608nobodyさん
03/01/27 00:07ID:???板違いだが、マジレス。
1000円以内で考えるなら、それなりに自分の英語力を使うこと。
無料でもよいなら、xreaをキーワードに色々調べてみな。
あとは適切な板に逝ってくれ。
0609nobodyさん
03/01/27 17:21ID:Pf9TSSSiMySQLってリレーショナルデータベースじゃないんですか? 知らなかった・・・。
Oracleしか使ったことないから同じような感覚でやってたら何か痛い目にあいますか?
0610nobodyさん
03/01/27 17:49ID:???0611nobodyさん
03/01/27 18:18ID:???0612nobodyさん
03/01/27 18:20ID:???てかOracleのwhereの後ろは反則だよな(w
0613nobodyさん
03/01/27 18:34ID:???oracleでは使えていたのに。
0614nobodyさん
03/01/27 20:58ID:???http://www.mysql.com/press/release_2003_05.html
0616jeek
03/01/30 03:02ID:WNym3cfzこの携帯ショッピングサイト、php で書かれているんですけど
非常に便利に使えます。
これは既存のスクリプトなのでしょうか、どなたかご存知です?
それとも、オリジナルかなぁ。
0617nobodyさん
03/01/30 05:50ID:p/wgMSmR以下の条件を満たすSELECT文を書きたいのですが、考えつきません。
1.現在から1ヶ月以内の更新情報を2つまで表示する。
2.ただし、1ヶ月以内に更新がなければ、さかのぼって最新の1つだけ表示する。
1.の条件までは書けるのですが、2.をどう書けばよいのか、どうか教えてください。
select * from table where hizuke > now() - interval 1 month limit 2;
ちなみに、テーブルは次のような構成です。
ID, 日付, 新着種別, ページタイトル, URL, 詳細, 表示の可否
0618nobodyさん
03/01/30 06:56ID:YNBbhRPJ★こんなサイト見つけました★
0619gn355my0
03/01/30 11:09ID:???一つのSQLで↑にぴったりマッチは難しいんじゃない?
それより最初から三件分取得しておいてアプリで制御した方が
早いと思う。
0620nobodyさん
03/01/30 13:45ID:???1のSQLを発行して、取得できなかった場合(レコードが無い場合)は
最新の1件だけを取ってくるようなSQLを発行する、というので
いいんじゃないの?
0621nobodyさん
03/01/30 18:11ID:0RBKBbdXWin2K+Apache1.3+PHP4+MySQLという組み合わせで使用しようとしているのですが、
WinMySQLadminでDatabasesを見ると
コンピュータ名
|-database1
|-database2
となっていますよね。
このdatabase1とかの部分を増やす(?)にはどうすれば良いのでしょうか?
今は手作業でディレクトリを作成していますが、これをPHPでやりたくて…。
解説サイトを見てもこのdatabase1や2は既に存在しているのが前提の話ばかりで。
もう一つ、それとは別の質問なのですが、
MySQLのアカウント(?)を増やすにはどうすれば良いのでしょうか?
今は一組のuserとpassしか作っていませんが、これを増やしたいのです。
0622nobodyさん
03/01/30 18:39ID:???<script language="php">
$link = mysql_connect("localhost", "user", "passward")
or die("Could not connect");
mysql_select_db("test") or die("Could not select database");
$query = "CREATE TABLE my_table (id INT, name CHAR(20))";
$result = mysql_query($query) or die("Query failed");
</script>
こんなんで、tableは作れる
SQLの本買ってきなはれ
0624nobodyさん
03/01/30 18:42ID:???rpm -qpl MySQL-3.23.55-1.i386.rpmで見てみるとmysqladmin無いみたいなんだけど…
このパッケージだけじゃ駄目なんだっけ?
0625nobodyさん
03/01/30 21:28ID:???データベースはコンソール(ドス窓)から手動で作らにゃならん。
って、本当は知ってるんでしょ?
アカウントも然り。だけんがこれに関してはいろんなツールでできる。
0626617
03/01/30 21:48ID:???select * from table where hizuke > now() - interval 1 month or id = last_insert_id() limit 2;
0627nobodyさん
03/01/30 22:26ID:???ありがとうございます。
>>625
いえ全く知りませんでした。
と言う事はいわゆるレンタルスペースで複数作ってもらう場合は、
そこの管理人に頼まないとダメなのですか?
#>>622のような方法もあるようですが。
0628nobodyさん
03/01/30 22:28ID:???アカウントではなくてデータベースの方です。
0629の
03/01/31 02:41ID:Nn5kYoP6CREATE DATABASE hogehoge
のクエリで作れるけど、管理できなくなるから、
レンタルスペースで権限は与えんでしょ。
0630nobodyさん
03/01/31 03:01ID:???アカウント
|-Forum
|-Chat1
|-Chat2
とかいう風にしたいのですが、無理なのかなー…。
0631nobodyさん
03/01/31 09:35ID:???てか、あなたが telnet とか ssh とか
tcsh とか bash を使えるようになってから。
タバコはハタチになってから。
話はそれからだ。
0632nobodyさん
03/01/31 11:07ID:???まー訳わからんなら弄ってみるが吉。
そうすりゃちったぁ何か収穫があるでせう。
がんばりーや。
0633nobodyさん
03/01/31 11:15ID:???かねやんMySQLAdmin
ttp://www.mmdb.net/m_kaneko/
phpMyAdmin
ttp://www.trustbee.com/phpMyAdmin-jp/
なんかを使ってミソ。
まー訳わからんならとりあえず弄ってみるが吉。
そうすりゃちったぁ何か収穫があるでせう。
がんばりーや。
0635617
03/01/31 14:05ID:???これって、insertしたセッションの最中じゃないとダメなのですね。
0636nobodyさん
03/02/02 00:57ID:2yDn27Vrブラウザ上で、MySQLを管理できるアプリの作成を考えています。
管理といっても、
@MySQLのユーザー、パスワードを受付て、DBに接続。
Ashow databasesの結果を一覧表示。
かつ、databaseの新規作成や、削除、選択が可能。
BAで選択したdbでのshow tablesの結果を一覧で表示。
かつ、tableの新規作成や、削除、選択が可能。
Cselect * from 「Bで選択したtable」の結果を一覧で表示。
かつ、データの作成や、削除、更新が可能。
という程度のものを考えているのですが、
上記Aのshow databasesの結果を取得する関数がわからず、つまづいています。
PHPマニュアルのMySQLサーバー関数のところを見たのですが、
それらしきものが見当たりませんでした。ご存知の方、お教えください。
0637nobodyさん
03/02/02 01:19ID:gRrRgtZTphpMyAdminはいれてる?参考になると思う。
(というか仕様が似すぎてて作るのやめるかもねw)
show databasesの結果取得はわからん。
できないからphpMyAdminも実装してないのかもね。
0638nobodyさん
03/02/02 01:32ID:2yDn27VrphpMyAdminの存在すら知りませんでした。
早速、DLして参考にしたいと思います。
ありがとうございました。
0639nobodyさん
03/02/02 02:46ID:GvAm8HhImysqldumpをかけることはできないのでしょうか。
0640の
03/02/02 17:22ID:eQAjYeC3できるよ。フツーに system で呼び出せば OK。
--
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/
0641nobodyさん
03/02/02 17:25ID:???ysite.ddo.jp/modules/news/http://mysite.ddo.jp/modules/news/http://mysite.ddo.jp/module
s/news/http://mysite.ddo.jp/modules/news/http://mysite.ddo.jp/modules/news/http://mys
ite.ddo.jp/modules/news/http://mysite.ddo.jp/modules/news/http://mysite.ddo.jp/modules/
news/http://mysite.ddo.jp/modules/news/http://mysite.ddo.jp/modules/news/http://mysite
.ddo.jp/modules/news/http://mysite.ddo.jp/modules/news/http://mysite.ddo.jp/modules/ne
ws/
0642nobodyさん
03/02/02 20:22ID:???-----------------------------
Mob1 | hoge1, hoge2, hoge3
Mob2 | hoge1, hoge3
と、
Monster | Item1 | Item2 | Item3
-------------------------------
Mob1 | hoge1 | hoge2 | hoge3
Mob2 | hoge1 | hoge3 |
ってどちらの形式の方が良さそうですか?
Item の部分は増えたり減ったりして書き直しを頻繁にするので前者の方が楽なのかな?
後者だと上の例でいえば Mob3 が hoge1〜hoge4 まで持っていた場合、
Item4 を追加しなくてはならないので何というか横に長くなりそうだなあとか…。
0643gn355my0
03/02/02 21:08ID:???ネタかな?
普通は
Monster | Item
-----------------------------
Mob1 | hoge1
Mob1 | hoge2
Mob1 | hoge3
Mob2 | hoge1
Mob2 | hoge3
だと思う。
完成したら公開よろしくね!
0644639
03/02/03 00:13ID:4TYvio9L$q = 'mysqldump --password=PASS -u USER DB > DB.sql';
system($q);
上記をPHPで実行してもバックアップが成功しませんでした。
まったく同じコマンド($q)をTELNETで実行すればうまくいくのですが…。
0645nobodyさん
03/02/03 02:02ID:???>>642とは別人だけど、色々なデータを纏めたい時ってどうするの?
Monster | Item | Gold | EXP
とかいう風に分かれているとき、
Itemのために何行も書くとGoldやEXPのところが重複しない?
似たようなことやろうと思ってるんだけど、DBは初めてなのでそのあたりの事がさっぱり…。
0646nobodyさん
03/02/03 02:02ID:jEwc5dws検証してないので適当に答えてみるテスト。
$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そこらへんは 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:???0651639
03/02/03 07:06ID:4TYvio9L$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:zZmUIE3R0653nobodyさん
03/02/04 17:15ID:jR3/RqTl一部の文字が条件と一致していないのに出てしまいます。
これってどういうことなんでしょうか?
0654nobodyさん
03/02/04 18:02ID:???php.iniで指定してる文字コードとMySQLで使ってる文字コードと
一部の文字と条件を調べてみんしゃい。
0655639
03/02/04 19:45ID:A1NhCJKbすみません、レンタルサーバー会社にも問い合わせてみます。
>653
わたしも同様の現象を体験しています。
>654のいうとおりで、特に文字数が少ない場合、
文字コードが一致する偶然が起きやすくなります。
わたしはそれほど気にならないのであきらめていますが、
いい対処法はあるのでしょうか。
0656nobodyさん
03/02/05 09:07ID:???1.文字コードはEUCを使う。
/etc/my.cnf の中に
[mysqld]
default-character-set=ujis
2.バイナリ比較する
WHERE BINARY name = 'あ'
0657nobodyさん
03/02/05 16:51ID:lVHnu0B4携帯でも検索かけて表示できるページにしたいのです。
SJISでは無理なのでしょうか?
PHPで直そうと思ったのですが、上手くいかないので
0658639
03/02/05 18:43ID:rzvQR9Wx$moji = mb_convert_encoding($moji,'SJIS','auto');
0659nobodyさん
03/02/05 20:56ID:???お使いのバージョンでは分かりませんけど。
0660nobodyさん
03/02/05 21:19ID:iZbItlvM[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:???ゲームやっている人ならわかると思いますが、下の例は経験値表です。
このような表で、BaseEXPはLv51以上も数値があるがJobEXPは50までしかない場合、
BaseEXPとJobEXPでテーブルを分けるか、空いた部分は全てNULLをいれて置くか、
設計(というほど大したものではないけど…)としてはどちらの方が良いでしょうか?
Lv | BaseEXP | JobEXP
-----------------------
2 | 1 | 1
3 | 4 | 2
...
51| 555 | NULL
0666gn355my0
03/02/06 00:20ID:???何に使うのか問い詰めてもいい?
■ このスレッドは過去ログ倉庫に格納されています