トップページ⇒php
988コメント357KB

mysql ヘルプ!

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/01/22 16:08ID:kMbsTQE3
リモートから家(常時接続)のmysqlサーバにつなげません
状況を詳しく書きます
PHPが動くプロバイダーのディレクトリにおいた自分の家の
mysqlサーバを操作するPHPに
$db = mysql_connect("mysqlサーバのip:3306","ゆーざ","ぱす");
と書いたのですが、駄目でした。
どうすればいいのでしょうか?
0486nobodyさん04/07/01 14:23ID:7y8AL+GJ
検索結果を表示させるのに、
総検索件数と、10件ずつ表示させたいのですが、

現在、2回クエリ使って結果を得ています、
1回には出来ないのでしょうか?

<現在>

select count(*) from hoge where flag=1;

select * from hoge where flag=1 limit $a,10;

このような感じでおこなっていたのですが、
レコードが1万件をこえてくると、結構時間がかかってしまいます。

なにか良い方法ありませんでしょうか?
048748604/07/01 16:08ID:???

このような感じでおこなっていたのですが、
レコードが1万件をこえてくると、結構時間がかかってしまいます。

なにか良い方法ありませんでしょうか?



ん?
なんか変な質問してますね・・・。
すみません。


perlでCGIスクリプトを作成してます。
DBIでMysqlに接続していますが、
このモジュールのあたりで、先の質問のようなことを
行うことは出来ませんでしょうか?



質問するって、結構難しいですね。
0488nobodyさん04/07/01 16:36ID:???
>>487
phpだとmysql_num_rows()とかあるんだけどね。
Perlってそんなのないのかしらん
0489nobodyさん04/07/01 17:30ID:???
perlもあるよ。

一発で取ろうとするとlimit使えんねっつー話じゃね?
049048604/07/01 17:42ID:7y8AL+GJ
>>489

そうです。
そんな感じです。

なにか、いい方法ないのでしょうかね。

DBIモジュールのマニュアルをじっくり読んでなかったので、
今読んでみたりしてます。

0491nobodyさん04/07/02 00:37ID:???
>>490
http://dev.mysql.com/doc/mysql/ja/Miscellaneous_functions.html
の FOUND_ROWS() を見れ。(以下触り)

> 状況によっては、LIMIT を指定しなかった場合にいくつの
> レコードが返されるかを、ステートメントを再度実行する
> ことなく確認したいことがある。このレコード数を確認する
> には SELECT ステートメントに SQL_CALC_FOUND_ROWS
> オプションを指定し、その後 FOUND_ROWS() を呼び出す。
> LIMIT なしで再度クエリを実行するより時間がかからない。

しかし、1万件程度で時間が掛かるってのも、DBのチューニング
や作りがおかしくね?
049248604/07/02 08:11ID:???
>>491

おお〜〜〜〜〜〜〜。

> > オプションを指定し、その後 FOUND_ROWS() を呼び出す。
> > LIMIT なしで再度クエリを実行するより時間がかからない。

確認しました。スバラシイです。
FOUND_ROWS()の呼び出しは瞬時にかえってくる。

自分のもってるオライリーのl本って、かなりバージョン古いな・・・。
新しいの買うか、ボロボロやし。

> しかし、1万件程度で時間が掛かるってのも、DBのチューニング
> や作りがおかしくね?
1万件でなく10万件でした。失礼。しかもさらに増えるし・・・。
likeとかで検索かけると、大変なことに。
チューニングもさらにシビアになりますね。

なにはともあれ、有難う御座いました〜。
491様に感謝!
0493nobodyさん04/07/02 16:48ID:???
>>491
知らなかったよ「FOUND_ROWS()」
しかし「MySQL バージョン 4.0.0 以降で使用できる」。
また旧版と新版で2パターン必要なのか...
0494nobodyさん04/07/09 11:51ID:+WklyQCB
今回初めてMySQLをインストールした初心者です。

参考書を見ながらインストールしたのですが、
EnvironmentタブのMyODBCのところに

NotFound
Driver3.51Not Found

と出ています。これは、参考書ではDriver Version 〜というふうに
なっていました。

あと、Databasesタブには、testのみが表示されていて、
mysqlが表示されていません。show dababasesコマンドでもmysqlは
表示されません。C:\mysql\dataには、ちゃんとmysqlのフォルダはあります。

この場合、MySQLにmysqlを認識させるにはどのようにしたらいいのでしょうか?
上記のNotFoundエラーを解消すればいいのかな・・・と思うのですが、
どのようすればいいのか分かりません。

ご存知の方がいらっしゃいましたら、よろしくお願いいたします。
0495nobodyさん04/07/09 15:38ID:???
質問!
オラクルマスター銀って学生でも比較的簡単に取得可能でしょうか?
0496nobodyさん04/07/09 15:45ID:???
>>495
スレタイ嫁
0497nobodyさん04/07/09 17:20ID:???
>>494
用語(名称)が正確でない。だから他人から
見ると意味がつかみづらい。

>EnvironmentタブのMyODBCのところに
>NotFound
>Driver3.51Not Found

これはMyODBCの状態だから、ODBC経由で接続を
行わないならそのままで構わない(正常)。必要であれば
ODBCドライバ(MyODBC)をインストールする。

>あと、Databasesタブには、testのみが表示されていて、
>mysqlが表示されていません。

恐らくWinMySQLadminで接続に使っているMySQLユーザが
データベースmysqlを参照できる権限がないものと思われる。
接続ユーザをrootに変えるか、GRANTで該当ユーザに権限を与える。

>>495
受験費用だけの問題。覚える"だけ"だから
むしろ若いうちの方が取りやすい。
あとベンダー資格なんぞ学生が持ってても
意味無いよ。無駄。会社入ってからで充分。
0498nobodyさん04/07/09 18:33ID:???
>あとベンダー資格なんぞ学生が持ってても
>意味無いよ。無駄。会社入ってからで充分。
いやそうでもないよ、
大企業は効果薄いかもしれないが
中小だと結構はったりが利くぞ
大企業無理で中小に入る可能性があるなら損は無い。

あとシスアドとか情報処理1種などもそれなりに効果あり。
0499名無しさん@そうだ選挙に行こう04/07/11 12:16ID:xhyXSdhv
MySQLのデータベースに出てくる「オーバーヘッド」って
サーバーへの負荷とイコールで考えて問題なっしんぐでしょうか??
ぐぐったけど、全く関連説明がデテコナインダス
0500名無しさん@そうだ選挙に行こう04/07/11 17:05ID:???
>>499
オーバヘッドと言ったら一般的には遅延やロスのこと。
負荷とは違う。
0501nobodyさん04/07/11 21:06ID:???
INSERT INTO $t1 SELECT * FROM $2
の場合、t1とt2のフィールド数及びフィールドタイプは同等
でなければならないのでしょうか?
t1の方のフィールドは$t2+3フィールドであります。


0502nobodyさん04/07/11 22:03ID:???
なんだそのめちゃくちゃな構文は
INSERTにSELECT・・・
050350104/07/12 07:39ID:???
めちゃくちゃね・・・
2行を1行で処理したいだけなんだけどなぁ
WHEREに全部書かないとダメかな

>>502
MySQLを使った事がありますか?
0504nobodyさん04/07/12 10:11ID:???
朝からわらた
050550104/07/12 12:39ID:???
スマートではありませんが自己解決しました
INSERTにSELECTを使った、めちゃくちゃな構文ですが正常に処理されています
0506nobodyさん04/07/12 13:08ID:???
質問内容の大予想(or透視)を要求することに素で気がついてなかったわけね。
その上“正常に処理”って、ゴミプログラムをゴミ箱行きにしたとかいうオチか?
0507nobodyさん04/07/12 19:42ID:???
>>503
副問い合わせの構文覚えろクズ
0508nobodyさん04/07/12 19:43ID:???
>>501
お前みたいに偉そうな質問者初めて見た。
そろそろ夏か?
0509nobodyさん04/07/12 21:19ID:???
502=506=507=508
本当に夏だよな
0510nobodyさん04/07/12 21:50ID:???
認定厨降臨か・・・
0511nobodyさん04/07/12 22:01ID:???
=510
0512nobodyさん04/07/13 00:12ID:AIgAJnQb
>>497
ご返事、ありがとうございます。
また、読み辛い文章で大変申し訳ございませんでした。

本題に入らせて頂きます。
GRANTで権限を与えようと試みましたが、以下のエラーが出ます。

ERROR 1045: Access denied for user: '@localhost' (Using password: NO)

これはパスワードが違うということでしょうか?
OSへのログインの時やMySQLのmy.ini.Setupタブに書いてあるパスワードや
Administrator(←UserName) で試してみましたが、同じエラーが出ます。

原因等、ご存知の方がいらっしゃいましたら、ご教授の程、よろしくお願い致します。
0513nobodyさん04/07/13 01:43ID:???
>>512
>'@localhost'
ユーザが指定されてないように思われ。
もちっと前の、コンソールで入力した操作から書き出して味噌。
0514nobodyさん04/07/14 20:43ID:CWlcyttG
>>513
ご返事、ありがとうございます。

自分のやった作業を全て以下に記します。

・MyODBC-standard-3.51.8-win.msiをインストール
 →これは特に特別な作業がないので問題はないと思っています。
 
・mysql.exe で以下のコマンドを実行
 mysql> GRANT ALL PRIVILEGES ON *.* TO ユーザ名@localhost
IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
 →結果
  ERROR 1045: Access denied for user: '@localhost' (Using password: NO)
 
 ユーザ名とパスワードは以下に記したものをいろいろ組み合わせてやってみましたが
 全て同じエラーになります。
 ●ユーザ名
  ・PCにログインするときの名前:Administrator
  ・my.ini Setupタブに書いてあるuser=xxxxxxxxx
 ●パスワード
  ・PCにログインするときのパス:xxxxxxxxx
  ・my.ini Setupタブに書いてあるpassword=xxxxxxxxx
 
 何かお気づきの点があれば、よろしくお願い致します。
0515nobodyさん04/07/15 01:16ID:???
>>514
ふむ。Windowsでインストールしたばっかりの状態ということね。
とすると初期ユーザとして管理ユーザrootが、"パスワードなし"の状態で
セッティングされているので、新たにGRANT権を持つユーザを作るのであれば、

mysql.exeを次のように実行
コマンドプロンプト> mysql -uroot [ENTER] (rootをパスワード無しでログイン)
管理ユーザrootはGRANT権を持つユーザを設定できるので、
mysql> GRANT ALL ON *.* TO ユーザ名@localhost
IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
(ALLはALL PRIVILEGESの省略記法)
で、 WITH GRANTな新しい管理ユーザが設定できるはず。

次に、
mysql> EXIT
コマンドプロンプト> mysql -uユーザ名 -pパスワード [ENTER]
で新しい管理ユーザでログオンできるか確認。
またrootにはパスワードを設定しといた方が良いね。
0516nobodyさん04/07/15 01:47ID:???
あと「PCにログインするときの名前」つまりOSのユーザと
MySQLのユーザは連動しません。mysql.exeなどのmysqlのツールを
使う際にMySQLユーザを指定しなかった場合、OSのユーザ名が代替として
指定されるます(Windowsだと普通'ODBC'というユーザだったと思う)が
ユーザの管理上は別のものになっています。

mysql.exeに対して、[Administrator]というユーザ名を指定した場合
MySQLでは登録されていないMySQLユーザと判断されて、匿名ユーザ
としてログオンしている状態だと思います。デフォルトインストール
で初期ユーザとして匿名ユーザの設定がなされています。
#最近のバージョンでは初期設定で匿名ユーザは削除されてた気もする。

それとmy.iniのuser/passwordですが、これは先のツールを使う際に
無指定だったときに代替で使われるものです。指定されているセクションで
例えば[WinMySQLadmin]であれば、その範囲のみの設定となります。
またuser/passwordの組ではなく単独で代替されるので、例えばユーザ名だけ
指定してパスワードは省略した場合などは注意が必要です。
基本的には[WinMySQLadmin]以外には指定しないのが良いです。
# WinMySQLadminはメニュー上でログオンユーザの切り替えが出来ないので。
0517nobodyさん04/07/15 22:03ID:rmg2BJyi
>>515,516
いつもありがとうございます。

すいません、いきなりつまづいてしまいました。

最初のコマンド「mysql> mysql -uroot;[enter]」を行うと以下のエラーが発生します。

ERROR 1064: You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right sytax to use near
'mysql -uroot' at line 1

他のところを探してみましたが、どうもよく分かりません・・・。
すいません。。。
0518nobodyさん04/07/16 00:24ID:???
>>517
「 mysql -uroot [ENTER]」はOSのコマンドプロンプトで行う。
故に;(セミコロン)は不要。mysql.exeにパスが通ってる
ディレクトリで入力。

OSのコマンドプロンプトは>>155 の文中では「コマンドプロンプト」、
MySQLのプロンプトは「mysql>」と書いてます。
0519nobodyさん04/07/16 00:45ID:???
>>518 ×155 ○515
0520nobodyさん04/07/16 23:43ID:Nh7Z2qfw
パソコンを買い換えたので、サイト作成時のローカルテスト環境を再構築してます。
とりあえずapacheとperlは完了したので、mysqlを入れようと思いますが、
久しぶりなのでダウンロードするファイルに疑問が。

win用のmysql4.0.18を使いたいのですが、ZIP形式のものが3つありました。
1.mysql-4.0.18-win.zip
2.mysql-4.0.18-win-noinstall.zip
3.mysql-4.0.18-win-src.zip

とりあえずインストーラなしの2ではないんですが、1と3の違いがわかりません。
どんな違いがあるのでしょうか?
0521nobodyさん04/07/17 00:54ID:???
srcというのはsorceの略
ソースコードだ

というか、なぜ全部解凍して調べようとしない?
052252204/07/17 02:19ID:RBk3Iaoi
>>521
じゃあインストールはできないんですか?というか自分でコンパイルするってこと?
見てみます。
0523nobodyさん04/07/17 02:27ID:???
ニブイやっちゃなぁ。
まあ解凍してわかっただろうな。
052452204/07/17 02:47ID:RBk3Iaoi
ソースコードが記載されてる、ファイルがあるかないかですね。
私みたいなバカは黙って1をインスコすることにしました。
0525nobodyさん04/07/20 11:22ID:???
BerkleyDBなどの他のデータベースと
MySQLの違いや、MySQLの利点を教えて
0526nobodyさん04/07/20 22:03ID:???
>>525
データベース板で効いた方がいんじゃない?
0527nobodyさん04/07/20 22:44ID:???
>>526
どこそれ
0528nobodyさん04/07/20 23:37ID:???
>>527
自分でちょっと探してみようかな、と全く思わせない態度が素敵♥
0529nobodyさん04/07/21 16:43ID:???
すごい夏厨降臨だな
探す気0かよ
おそらく、厨2かなぁ?
0530sage04/07/21 23:09ID:???
ランダムに行をソートするselect文はどうかいたらいいですか?
0531nobodyさん04/07/21 23:12ID:???
>>530
自分で調べろよ
0532nobodyさん04/07/22 01:40ID:BlXlQybJ
DB板にて回答がえられなかったので、こちらで質問させてください。
ストアドプロシージャでWHERE句の条件を2つ指定しているのですが、
条件1(Name)しか合っていないのにレコードが返ってきてしまいます。
一方条件2(Password)が合っていて、名前が違うときはレコードの
カウントは0で正しく動作します。なぜだかわからず困っています。
どなたかご指導お願いいたします。

あと、ワイルドカード%を使用した条件指定もわかる方いたらお願いします。

CREATE PROCEDURE proctest
(IN Username char(20) ,In Pass char(10) ,Out Result int)
BEGIN
SELECT count(*)as count FROM personal where Name like Username AND Password like Pass;
SELECT count, case
when count=1 then 1
else -100
end Result;
END
0533nobodyさん04/07/22 07:45ID:???
>>532
ワイルドカードの使い方なんて、ぐぐれば腐るほどヒットする
053453204/07/22 10:30ID:u/8YGDyZ
>>533
自分の聞きたいのはストアドプロシージャ内での使用方なんですが。
例えば
SELECT count(*) FROM personal where Name like Username'%' ;
にするとシンタックスエラーになりますし、
SELECT count(*) FROM personal where Name like 'Username%' ;
とすると文字列"Username%"そのものが検索キーワードになってしまうのです。
0535nobodyさん04/07/22 14:34ID:???
ググれば腐るほどヒットするが。
0536nobodyさん04/07/22 15:04ID:???
>>532
どう見ても釣りだよなぁ。

delimiter $
create procedure proctest (
in Username char(20),
in Pass char(10),
out Result int
)
begin
select count(*) into Result
from personal
where `Name` like Username and `Password` like Pass;
if Result = '1' then
select 1;
else
select -100;
end if;
end
$

call proctest('name1', 'pass1', @Result);
053753204/07/24 02:53ID:OJZpo2Ke
>>536
うまくいきました!本当にありがとうございました。
Mysqlのストアドプロシージャについて参考になるようなサイトってありますか?

>>533 ,535
いろいろと検索をかけてみてはいるんですが、適したサイトがみつかりません。。
もしよければ教えてもらえませんか?

質問ばかりですいません。宜しくお願いします。
053853604/07/24 20:38ID:???
http://dev.mysql.com/doc/mysql/en/Stored_Procedures.html
http://www.limy.org/program/db/mysql_tips1.html
0539nobodyさん04/08/01 02:07ID:nV30chx5
insert直後、
autoincrementのidを取得するいい方法はないでしょうか?
ユニークと思われるカラムがあれば、それで検索出来るのですが
ない場合はどうすればいいでしょう?
0540nobodyさん04/08/01 20:25ID:???
>>539
http://dev.mysql.com/doc/mysql/ja/Miscellaneous_functions.html
0541nobodyさん04/08/02 09:13ID:???
>540
LAST_INSERT_IDですね。
こんな簡便な方法があるとは知りませんでした。
ありがとうございました。
0542nobodyさん04/08/06 16:35ID:sKXbLEqO
順番を持った、可変個数の変数をMySQLに格納する時、
一レコードに、,などで区切ってつっこむか、
レコードを個々で別にして、順番を入れたカラムを作るか、
どっちがいいでしょうか?
順番カラムを作ると、そのぶんデータが無駄な気もするし、
かといって,で接続して格納するのも、DBらしくない気がします。
あるいはもっといい解決法があれば教えてください。
0543nobodyさん04/08/06 18:18ID:???
>>542 後者が正しいです.文字列で「,,,」は普通しませんそんなこと。
データの無駄なんか気にしないのが正しいDBです。
054454204/08/06 21:52ID:???
やっぱりそうなんですね。ありがとうございました。
0545nobodyさん04/08/06 22:39ID:???
何のためのカラムだと思ってるんだ
0546nobodyさん04/08/08 22:14ID:???
テーブルの3から5行目を取得したい場合はSQLをどうかけばよいのでしょうか?
0547nobodyさん04/08/10 13:47ID:???
mysqlの LOCK TABLE は有効なのでしょうか?
かけちがいか、データが飛んでしまったよ。
何もしないほうが安定してたんですが・・・。
0548nobodyさん04/08/10 13:48ID:???
3から2個
3,2
0549nobodyさん04/08/10 15:01ID:???
>>548
?
0550nobodyさん04/08/10 15:07ID:oBY5B1dB
Limit
0551nobodyさん04/08/10 15:49ID:???
>>550
ありがとう。やっと理解できました。
0552nobodyさん04/08/10 16:59ID:???
レンタルサーバのMySQLにAccessでODBC接続して
データ操作していたのですが、
昨日から突然接続できなくなりました。
Can't Connect 〜〜 (10060) と出ます。

原因は何なのでしょうか。ご存知の方がおられればお願いします
0553nobodyさん04/08/10 19:18ID:Wtg2rx9f
すいません、mysqlのパスワードを紛失してしまいました。
サーバーのrootパスワードはもっているのですが、
どうすればデータベースを新規に作成できるのでしょうか?
どなたかお教えください、。おねがいします。
0554nobodyさん04/08/10 20:41ID:5nTlbA9N
>>552
レンタル屋に聞け馬鹿

>>553
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=mysql+%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89+%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88&lr=
0555nobodyさん04/08/11 10:50ID:???
>552
ロリポなら障害が有ったみたいだが違うか?
0556nobodyさん04/08/21 16:00ID:kIitMI6t
order by num
でnumをソートして表示しようとすると
100
110
90
80
という風な並びになってしまうのですが
80
90
100
110
とソートするにはどう記述すればいいのでしょうか?
055755604/08/21 16:01ID:???
間違えました
100
110
80
90
と並んでしまうのを
80
90
100
110
と並べたいのです
0558nobodyさん04/08/21 16:03ID:???
order by num asc
055955604/08/21 16:06ID:???
>>558
order by num ascでも同じ結果になっちゃうんです
order by num descだと
90
80
110
100
と並びます
056055604/08/21 16:09ID:kIitMI6t
あ、ごめんなさい、正確に書くべきでした。問題っぽいのが
小数点付の数値が入っている場合があるんです
それも小数点以下1位までだったり2位までだったりします
ここが問題っぽいですよね。
101
110.3
81.25
95.4
この様に並んでしまうのを
81.25
95.4
101
110.3
と並べる方法は無いでしょうか?
0561nobodyさん04/08/21 18:34ID:???
文字列型→数値型
0562nobodyさん04/08/22 18:09ID:fCwPrUXs
パスワードやIDなんかを暗号化した状態でDBに入れたいのですが、
Windows環境で復号化が可能の良い方法ってありますか?

Mcrypt暗号化関数みたいのが理想なんですが……
0563nobodyさん04/08/22 18:17ID:???
(゚Д゚ )ハァ?
普通は暗号化されたパスと
ユーザーが入力したパスを暗号化して見比べるんだろが
056456204/08/22 18:49ID:???
ああ、そうだ、本当だ……何考えてんだ俺……すいません。。
0565nobodyさん04/08/22 20:01ID:???
まぁ気にスンナ
ちょっとムキになった俺も悪かったよ
0566nobodyさん04/08/22 22:39ID:???
>>563
でもさ、リマインダーとか作ったときどうする?
0567nobodyさん04/08/22 22:49ID:???
(゚Д゚ )ハァ?
なんでそこでリマインダーの話が出るわけ?
0568nobodyさん04/08/22 22:54ID:???
>>566
どうするってどういうこと?
リマインダーで再生成して、それを暗号化して格納すりゃいいじゃん
0569nobodyさん04/08/23 01:15ID:???
新しいパスワードにしないでパスワードを再送する場合
0570nobodyさん04/08/23 18:27ID:???
パスワード再送するなんてセキュリティ何も考えてない奴しかせんだろ
普通はランダムなのを生成して新しいパスワードとする。
0571nobodyさん04/08/31 15:07ID:???
VARCHARの最大255では少なすぎで、TEXTの65535では多すぎるのですが
TEXTの最大数を指定する方法はないでしょうか?
1つずつ追加する場合は、PHP側で文字数を指定できるのですが、他人に
使わせるもので、LOAD DATA INFILEでも追加させるので、良い方法が
あるとよいのですが。
0572nobodyさん04/09/10 21:17:24ID:ChbHudjL
MySQL3.23で、テーブルの一番古いレコードを1件削除したいのですが、
Ver4ではないので、delete from table order by no limit 1; が使えません。
なにか手軽に削除する方法はないでしょうか?
(selectで一番古いのを探し出してってやれば出来るんですけど)
0573nobodyさん04/09/11 16:16:33ID:???
4では消せるのかい?
0574nobodyさん04/09/13 20:44:08ID:DiNpN1u+
phpMyAdminのリレーション登録の仕方がわかりませんので質問させて下さい。

areaというテーブルと、shopというテーブルがあるのですが、
shopの「area_id」はareaの「id」とリファレンスしています。
phpMyAdminで、どこをタブのどの部分を設定すれば
紐付けされるのかがわかりません。

一応create table貼り付けます。
sqlそのまま打てるみたいなので、sqlでどう書けばいいのかが解れば
紐付けできると思うのですが…。

create table area
(
idsmallint(8)not null,
namevarchar(200)null,
primary key(id)
);

create table shop
(
idsmallint(8)not null,
area_idsmallint(8)not nullreferences area(id),
namevarchar(200)null,

以下略


ちなみに…、翔泳社の『MySQL徹底活用』という本を
買ったのですが、本で書かれているphpMyAdminのver.が古いため
操作方法が微妙に違っていてわかりません(T_T)
初歩的な質問お許し下さい。
0575nobodyさん04/09/13 21:15:51ID:???
>>574
mysql_query(create table shop(idsmallint... ) );
0576nobodyさん04/09/13 21:23:52ID:DiNpN1u+
575さん、レス有難うございます。
ちょっと短くてよくわからないのですが…、
shopのcreate tableをmysql_query();でかこんで実行すれば良いのでしょうか?
いったんshopのテーブルをドロップした後、
phpMyAdminでSQLクエリー実行してみましたが
エラーになってしまいました。
057757504/09/13 22:16:25ID:???
>>576 phpMyAdminのことはよく分からんが、ただのPHPからMySQLを何したいなら
ttp://www.php.net/manual/ja/function.mysql-query.php などのマニュアルを
読むべし。中華、それ以前に、>>574に書いてあること、PHP/Webとかいう前に単に
ターミナルから実行して、やりたいことが出来るってとこは確認済みなんでしょね?
そうでなければ、MySQLのマニュアルに戻る、つう話になる。
057857404/09/13 22:24:03ID:DiNpN1u+
>>577
レス有難うございます。
phpのファイル上ではLEFT JOINで複数のテーブルから値を呼び出して
問題なく表示させています。
ただ、phpMyAdminからデータを追加する際に
例えばshopのデータを追加している時area_idにエリアの名前が
でないと不便なので、リレーションの登録をしたいんです。
057957404/09/14 01:18:43ID:m/olOuEy
すみません、追記です。
本に書いてあるphpMyAdminのver.は2.3.3pl1で、
そこでは『構造』タブの下の方が、

● フィールドの追加
● リレーション表示
● テーブル構造の確認 [ヘルプ]

となっているのですが、私のphpMyAdmin 2.5.7-pl1 だと

● フィールドの追加
● テーブル構造の確認 [ヘルプ]

となってます。
verが上なのに● リレーション表示 が設定できないのは
ちょっと変だと思うのですが…。
どなたかロリ○ップのレン鯖を利用されていて
phpMyAdminを使ってらっしゃる方、いらっしゃいませんか?

(スレ違いだったらごめんなさい。
検索したら、以前にもphpMyAdminの話がでていたので…。)
0580nobodyさん04/09/14 21:17:20ID:TFDgdHfq
order by no desc 等で並び替えたレコードの上6行目から10行目までを表示したい場合はどうすればいいんでしょうか?
0581nobodyさん04/09/14 21:30:00ID:???
>>580
LIMIT 5,5;
http://dev.mysql.com/doc/mysql/ja/SELECT.html
0582nobodyさん04/09/18 10:11:30ID:???
SELECT ..... WHERE id IN(1,3,2) で複数行を選んだ場合、
この 1→3→2 の順番で読むことはできないんでしょうか?
1回ずつSELECTしないとダメですか?
0583nobodyさん04/09/18 15:24:35ID:jJIXNQco
テーブルの構造が以下のようになっていた場合に、

テーブルA------------------
ID、人物
テーブルB------------------
ID、テーブルAのID、持ち物

持ち物のデータに(すいか、ばなな、みかん、ぶどう)があるとします。
で、すいかとみかんを持った人物を検索したい場合にMySQL以外だと

SELECT テーブルA.ID
FROM テーブルA, テーブルB
WHERE (持ち物 LIKE %みかん%) AND (テーブルA.ID = (SELECT テーブルAのID FROM テーブルB WHERE (持ち物 LIKE %すいか%));

のように副問い合わせを使って検索できるのですが、
この場合MySQLだとどのように検索することができるのでしょうか。
わかる方、ご教授お願いします。
0584nobodyさん04/09/18 18:44:18ID:???
>>582
IN (value, ...) で返されるレコードの順番を指定することはできない。
というか、order by節を使わない場合のレコード順は不定となる。これは他のRDBでも同じ。
order byを何とかして使うか、1回ずつselectするか、プログラムの側で並び替えるしかない。

>>583
MySQL 4.1以降ならサブクエリをサポートしてるよ。
http://dev.mysql.com/doc/mysql/ja/Subqueries.html
けど、その例なら自己結合を使ったほうが簡単だと思う。
select b1.テーブルAのID from テーブルB b1, テーブルB b2
where b1.テーブルAのID = b2.テーブルAのID
and b1.持ち物 like '%すいか%' and b2.持ち物 like '%みかん%';
058558304/09/19 02:06:03ID:0NH761Ca
>>584
ありがとうございます。
自己結合の存在を忘れていました(^^;
0586nobodyさん04/09/20 18:25:03ID:???
質問です。PHP未経験ですみません。

現在PHPでマルチスレッドを想定したWebシステムを作成しています。
クライアントからの要求時、MySQLからSELECTの結果オブジェクト
を取得して表示し、終了後DBを切断する処理を行っているのですが、
切断前にmysql_free_result関数で開放するようにした方が宜しいの
でしょうか?
PHPマニュアルによると、mysql_free_result()はスクリプト実行の
メモリの使用量が多すぎると懸念される場合にのみ必要になります。
となっているのですが、データ量が多いために検討しております。

マルチスレッドで扱った場合、mysql_free_resultを実行した際に
他に影響が出てしまうようなことはあるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています