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

mysql ヘルプ!

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/01/22 16:08ID:kMbsTQE3
リモートから家(常時接続)のmysqlサーバにつなげません
状況を詳しく書きます
PHPが動くプロバイダーのディレクトリにおいた自分の家の
mysqlサーバを操作するPHPに
$db = mysql_connect("mysqlサーバのip:3306","ゆーざ","ぱす");
と書いたのですが、駄目でした。
どうすればいいのでしょうか?
0385nobodyさん04/05/19 00:08ID:???
372の日記がなくなると廃墟だなここ。
そう考えるとなんで>>383はそんなにうざがったんだ?
0386nobodyさん04/05/19 12:33ID:???
自分の思い通りにいかない事が
0387nobodyさん04/05/19 17:54ID:???
>>372=>>385
なんだかな
スレ違いの話されて気分いいはず無いだろ

って、釣りかよ
0388nobodyさん04/05/19 22:34ID:???
おまえら板違いですよ
0389nobodyさん04/05/19 22:59ID:???
>>388
お前が一番板違い
0390nobodyさん04/05/20 00:05ID:???
2chにはデータベース板というものがあって
そしてそこにはMySQLスレもあって…
といちいち説明せんと理解もできんのか

http://pc5.2ch.net/test/read.cgi/db/1079502373/l50
0391nobodyさん04/05/20 01:23ID:???
>>392君、>>390君のパスを華麗にスルー!
0392nobodyさん04/05/20 02:17ID:???
だから、PHPやPerlにおけるMySQLの運用のためのスレなんですってば。
板違いとか言う奴は今後一切mysql_queryと書いたらイカン。コピペもダメ。辞書登録もダメ。
0393nobodyさん04/05/20 02:35ID:???
そもそも只の単発質問スレに>>392のような重厚な意義があるとは思えん
0394nobodyさん04/05/20 13:53ID:???
DB板以前からあるんだから使い切るまではまったりつかっときゃ良いだろ。
0395nobodyさん04/05/24 09:31ID:dSsrxF7S
select で得た結果の中から特定のIDの表示順を一回のSQLで取得する方法はあるでしょうか?
例えば、成績テーブルがあり、カラムが2つ(生徒ID、得点)あるとします。
select 生徒ID,得点 from 成績テーブル order by 得点 DESC;
で得点順に並べられますが、生徒IDが「10」の生徒は何番目か?を知るということです。
結果をループさせて生徒IDを見ればできるのですが、これくらいSQLでサクっと出せないか
と思いますが、どうでしょうか?
0396nobodyさん04/05/24 09:55ID:???
>>395
サブクエリ使わないと1回では無理でしょう。
ID=10の得点をselectしてその得点以上をcount()する。
039739504/05/24 11:19ID:dSsrxF7S
>>396
1回では無理みたいですね。
0398nobodyさん04/05/24 21:55ID:???
君たち、副問い合わせを使えばできるってことは一発って事なんだよ。君たち。
0399nobodyさん04/05/24 22:03ID:???
select1個につき1回とかおもってるんじゃねーの
0400nobodyさん04/05/24 22:03ID:???
複問い合わせ=select後、select
つまり2回してる、とこういうことが言いたいんだろう
0401nobodyさん04/05/24 22:12ID:???
サブクエリを使えないバージョンだから
副問い合わせを使わない方法を聞きたい、って話じゃないの?
040239504/05/25 10:39ID:xFzsgML9
言葉足らずでした。バージョンは3.23.54 です。
0403nobodyさん04/05/25 15:29ID:???
>>402
マニュアルに古いMySQLでの副問い合わせの置き換え
のTipsがまとまってるし、他のサイトでも情報はあるので
他のDBMSの思考のまま「副問い合わせが無い」ってだけで
考えが停止しなけりゃ、大概のものは何とかなる。
データベース設計も考慮せにゃならんこともあるので
単純に移行つうケースでは難しい局面もあるけど。
0404nobodyさん04/05/26 18:28ID:tBH3RGFO
質問させてください。
PHPからMySQLのデータをselect文で抽出しようとしているのですが、
データの最後から任意の数を昇順で収得することはできるのでしょうか?
WHERE sample=1 ORDER BYsample_id DESC LIMIT 0, 5
こういう感じでやってみましたが、これだと降順になってしまいます。
DESCを入れないと最初からの5件になってしまう・・・
今は仕方なく後でarray_reverse()でひっくり返してるんですが
抽出段階で希望の順番になってくれると処理を簡略化できるのにと思っています。
以上よろしくお願いします。
0405nobodyさん04/05/26 18:58ID:???
ASC
0406nobodyさん04/05/27 11:39ID:uyBl2d4s
>>404
DESC を入れなくて昇順にならないのはおかしいですね。
sample_id は数字ではなくて文字ですか?

>>405
order by のデフォルトはASCでは?
0407nobodyさん04/05/27 13:49ID:???
>>404
最初すげー初歩的な質問かと思ったけど、よくよく見ると
結構難しいなそれ

>>406
DESCを入れないと(昇順で)最初からの5件って言ってると思われ
0408nobodyさん04/05/27 14:01ID:???
>>404
SELECT * FROM table ORDER BY sample_id ASC LIMIT count(*)-5, 5;
みたいなことがやりたいんでしょ?(できないけど)

俺には泥くさい方法しか思い浮ばんorz
040940704/05/27 14:04ID:???
>>404
とりあえずプログラム初心者の俺が即興で考え付いたのは、

SELECT COUNT(*)で取得した全レコード数を、PHPで変数$hogeにセット
↓
$hoge -= 5
↓
WHERE sample=1 ORDER BY sample_id LIMIT " . $hoge . ", 5


でどうだろう
041040704/05/27 14:06ID:???
>>408さんとほぼ内容かぶってたな・・
041140404/05/27 16:51ID:MHGXoj5w
みなさんレスありがとうございます。
>>406
実際作ろうとしているものはsample_idの部分は時間です。
10桁の数字でデータベースに格納されてます。
>>407-408
やっぱり前処理か後処理が別途必要になるわけですね。
参考になりました。ありがとうございます。

作りたいものを具体的に書くと、この2chのレス表示みたいなことがさせたいんです。
板トップだと各スレッドは1さんの後に、最新投稿が時間の古い順に10件表示されてます。
このレス部分を抽出段階でこの順番で収得するにはどうすれば良いんだろ?と
いろいろ考えてました。
0412nobodyさん04/05/28 09:40ID:yz9ImxWf
windows98+Mysql3系です。
コマンドプロンプトから外部SQLファイルを読み込ませようとしているんですが、
うまくいきません。

mysql> use test
Databese changed
mysql> test < tmp.sql
ERROR 1064: You have an error in your SQL syntax near 'test < tmp.sql' at line 1

になってしまうんです。SQL分はネットのサンプルからコピーしたもので
間違い個所等はないように思えるんですがアドバイスお願いします。
0413nobodyさん04/05/28 09:51ID:???
>>412
tmp.sqlの1行目に間違いがある
0414nobodyさん04/05/28 13:15ID:???
test < tmp.sql が1行目
0415nobodyさん04/05/28 13:18ID:6cZBVmMM
>>412
外部ファイルの実行は
mysql>\. filename
じゃねーの。
041641204/05/28 20:47ID:???
どうもです。
\. filename 又は source filename
でできました。
0417nobodyさん04/05/31 21:52ID:???
質問です。

次のようなテーブルがあります。

・table_program
-----
ID
番組名
番組名かな
-----
・table_song
-----
ID
table_programID
曲名
曲名かな
-----

「曲名」で検索して、検索結果には「曲名」と「番組名」を表示したいのですが、
どのようなSQL文になるのでしょうか?
無理ではないと思いたい のですが。

よろしくお願いします。
0418nobodyさん04/05/31 22:45ID:???
たぶん入門書を読んだほうがいいんでない?
0419nobodyさん04/06/01 08:31ID:???
>>417
SELECT s.曲名,p.番組名 FROM table_song AS s LEFT JOIN table_program AS p ON s.table_programID=p.ID WHERE s.曲名='ちんこ音頭';
0420nobodyさん04/06/01 18:37ID:???
>>419
ありがとうございました。

>>418
買ってみたのですが、どうも分かりづらくて・・・
で、mysql.comのマニュアルを見てたのですが、あまりにも多すぎて・・・
>>419から逆引きで調べてみます。

/* 週末には本屋に行って来ます。 */
0421nobodyさん04/06/01 20:00ID:???
Windows2000 に Mysql4.0.20aをインストールしました。
WinMysqlAdmin.exe を実行すると、

ダイナミック リンク ライブラリ LIBMYSQL.dll が指定されたパスC:\mysql\bin;;C:\WINNT\system32;C:\WINNT\system;C:\WINNT;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem に見つかりませんでした。

というエラーメッセージが出ます。
\bin フォルダにはもちろん LIBMYSQL.dll は見当たらないし、\WINNT フォルダの中にも My.ini がありません。
LIBMYSQL.dll は全部で2つ見つかりました。

WinMysqlAdmin.exe を実行するには、および、不足しているファイルを補うにはどうしたらよいでしょうか?
0422nobodyさん04/06/01 20:28ID:???
>>421
C:\mysql\binにlibmysql.dllがないのが、なんとなくおかしい。
# MySQL4.0.18のレイアウトから4.0.20aで変わってるのかも知れんが。

MySQLのサービスを停止してから、MySQLをアンインストールして
再度インストールしてみれ。
0423nobodyさん04/06/01 20:49ID:???
>>421
試しにダウンロードしてみた。
確かにdllが無い。
元の4.0.17に戻しました。
042442104/06/01 20:54ID:???
>>422

>C:\mysql\binにlibmysql.dllがないのが、なんとなくおかしい。

そうですよね。

起動そのものができてないです。
アンインストールして再インストールしてみました。
やはり同じだ…。
ダウンロードしなおしてやってみてもダメでした。
042554904/06/01 21:44ID:???
>>423

なんと無かったですか!
こういうことってよくあるんでしょうか。

4.0.17 とか 4.0.18 あたりを入れたいんですが、
ダウンロードできるページが探しても見つからない。
本のCD-ROMとか使うしかないだろうか。
0426nobodyさん04/06/01 22:30ID:HgyXjo5H
>>425
どうぞ
http://downloads.mysql.com/archives.php?p=mysql-4.0&o=-win
042742104/06/02 00:00ID:???
>>426
おおお!
ありがとうございます。

(421=425=549←間違えた)
042842104/06/02 00:33ID:???
ちゃんとインストールできました。^^
0429nobodyさん04/06/02 15:16ID:???
mysqlの勉強がしたいです。

今は、win98に入れてます。それでサーバを起動させてmysqlとプロンプトに入力すると、
接続ができ中のものがなんでも見れちゃいます。

勉強したいのはそうゆう基本部分で、例えば普通レンタルサバではshellとかでサバにインスコしてある
mysqlにつなげられますよね。でも、mysqlと打っても当たり前だけど、接続ができない。自分がもらってる
ユーザ名とかでなきゃ。

大元のルート権限・パスワードとかを変えるにはどうすれば。とかが知りたいです。簡単に言うと
自分のwin98に入れてあるmysqlにプロンプトからmysqlとユーザ名・パスワードをなしでやっても
接続できないようにしたいんです。

接続後のことはmysqlマニュアルとかにも書いてあるので、いいのですが、基本の基本がどこに書いてあるか
わからないので、どこのサイトに行けとか、mysqlマニュアルのこのページを読めとか教えて下さい。

低レベルなし津文ですみませんがどなたかお願いします。
0430nobodyさん04/06/02 15:28ID:???
>>429
>今は、win98に入れてます。それでサーバを起動させてmysqlとプロンプトに入力すると、
>接続ができ中のものがなんでも見れちゃいます。

確かあれだろ。mysqlって打って接続できるのはwin(普通UNIX)のroot権限を持ってるやつだけだろ。
だからサバは普通mysqldをroot権限で行わないで、別のユーザを作って行わせる。
なんか違うな・・・
mysqldで起動させたユーザだけがmysql(ユーザ名なし)で接続できるんじゃなかったっけ?
だからtelnetとかで、外部から接続してもそのユーザはmysqlを起動させたユーザじゃないから
与えられたユーザ名でしか接続できないと思う。

だから自分のパソに入れてあるなら、ユーザを二つ作ってaっていうユーザに起動させた後、bっていうユーザに
でログインするとmysql(ユーザ名なし)では接続できないんだったと思う。

間違ってるかもしれんから、先に謝る。ごめん。誰か補完してくれ。
0431nobodyさん04/06/02 15:40ID:???
とりあえずWinのmysqlのrootにパスを設定する。
これでrootしかアクセスできなくなる。
次にrootでユーザデータベースを作る。
GRANT 権限 ON ホスト名 データベース名 ユーザ名 IDENTIFIED パスワード みたいな感じ
俺も良く分からんからmysql grantとかで検索してくれ。
0432nobodyさん04/06/02 15:51ID:???
rootになってまず全てのユーザ(名無しさん)を削除せんとだめだな。
043342904/06/02 16:06ID:???
>>430>>431>>432
こんなに一杯ありがとうございます!かなり嬉しいです。

>>430
今試してみました。aユーザに起動させてaユーザを一度ログアウトしてbユーザで戻ってこようと思ったら、
ログアウトした時にmysqlもダウンしてしまいました・・・

>>431
データベースをひとつ作ってそれを扱えるユーザ・パスワードを設定するGRANT構文はできるのですが、
>とりあえずWinのmysqlのrootにパスを設定する。
がわかりません。それは名無しで接続して、名無しにパスワードを設定するってことですか?
それとも
mysql -u root;
で接続してrootという名前のユーザのパスワードを設定するってことですか?

>>432
ユーザの削除?それをやらないと名無しでいつまでたっても接続ができてしまうということですね。
mysql ユーザの削除
でぐぐってみます。
0434nobodyさん04/06/02 16:21ID:???
>>429
基本部分の質問なら、ここで聞くよりも
こういうサイトとか読んで勉強した方が早い

ttp://www.rfs.jp/server/mysql/02/01.html
043542904/06/02 16:37ID:???
>>434
ありがとうございます。今、mysqlっていうデータベースでユーザ情報を管理してるらしいので、
rootで入って、use mysql して
delete from user where host='localhost' and user='';
ってやってみたらQuery OK, 1 row affected (0.16 sec)と出たので、
やった!と思って一度quitして試しに名無しで接続できるかやってみました・・・

何故か名無しで接続できてしまいました。なんかが違うみたいです。
043642904/06/02 17:13ID:???
use mysql;
delete from user where host='localhost' and user='';
ってデータベースmysql内のテーブルuserの中からフィールド名hostの値がlocalhostで
且つ、フィールド名userの値がnull?のレコードを削除するっていう命令ですよね。

今mysqladmin内のDatabaseってタブを見てみたら今まではmysqlとか元々あるデータベースの
情報があったんですが、全て消えてました・・・

もしかして、databaseを全て削除してしまったのかもしれません。インスコしなおししなきゃいけないですよね。
043742904/06/02 18:39ID:???
一度インスコしなおして、またななしユーザの削除に挑みました。今度は
use mysql;
select user from user;
で名無しがあること確認してから
delete from user where user='';
として、レコード2つ消したよっていう返事をもらいました。
select user from user;
で見たら確かに消えていてrootが二つ並んでるだけになりました。
その後一度mysqlをシャットダウンして再起動してみると、今度は信号が赤から青にかわらくなって
しまいました。

名無しユーザを消すと何故か次の起動でおかしくなるんですが、名無しユーザは消すべきでないのでしょうか?
でも普通のレンタルサーバとかなら名無しユーザなんて消していますよね。
とりあえずまた再インスコして今度は名無しユーザにパスワードでもつけてみようかと思います。
0438nobodyさん04/06/02 19:01ID:???
>>437
WebProg板の内容と離れてきたから
↓こっちでどうぞ
データベース

http://pc5.2ch.net/db/
043942904/06/02 19:24ID:???
>>438
ありがとうございます。いってみます。
0440nobodyさん04/06/02 20:43ID:???
>>425
>こういうことってよくあるんでしょうか。
パッケージングミスは良くあることではないが、
自分では良くやるな...バージョン管理してんのに
別の混ぜちゃったり。

libmySQL.dllはnoinstall版には入ってたよ。

トップのダウンロードページのWinの項はバージョンは4.0.18
だったりするので、Win版の4.0.20aはまだ微妙なのかもしんない。
一応レポ、出しとくけどね。
0441nobodyさん04/06/02 20:52ID:???
なんつうか、
・クライアントコマンドmysqlの(OSの)実行ユーザ
・DBMSであるmysqldの(OSの)実行ユーザ
・MySQLデータベースのユーザ
は、ちゃんと区別して考えてくれ。

Webプログラムで利用するなら、区別の無いOS(Windows)
じゃなくて、普通に区別する環境で使うことが多いだろ。
044242104/06/03 09:27ID:???
>>440
うーん、やっぱり人間のやってることなんだなぁ。
結局4.0.18をインストールしたんですが、dllの他にも結構足りないファイルがあるみたい。
4.0.20aと「a」がついてるのは、マイナーバージョンアップの更にマイナーなバージョンアップなんだろうか。
一応知らせたほうがいいのかなと思ったけど、レポートの出し方わかりませんでした。^^;
044342104/06/03 09:29ID:???
>dllの他にも結構足りないファイルがあるみたい。

4.0.18と比べてみると4.0.20aで足りないってことです。
0444nobodyさん04/06/03 20:25ID:XU5SaHAn
PHPでDBを呼び出して表示させるようにしたんですが
エンコードが間違っているのか文字化けを起こしてしまいます。
ブラウザ側でエンコードを変えて見てもDBから引っ張ってきた部分は文字化けしたままになります
これはMySQL側で設定を変えれば回避できるのでしょうか?
またその方法等を教えていただけませんでしょうか。よろしくお願いします
ちなみに
PHP Version 4.3.6
MySQL 4.0.14b
を使ってます
0445nobodyさん04/06/03 20:45ID:???
>>442
足りないファイルはレイアウトの変更もしくはパッケージングのミス。
例えばlibmysql.dllはlib/optに入っているが、パッケージされている
プログラムの中で/binにあることが前提でコンパイルされているものが
あるのでパッケージングミスと考えられる。

この辺はビルドの設定/ノンインストーラ/インストーラ版を比べてみて
調べるのが確実だが、ノンインストーラとインストーラ版では敢えて外したり、
入れたりしてるファイルもあるので、ファイルの有無でみるのではなく、
そのパッケージでエラーなどが出て整合性が取れなくなっている箇所があれば
その部分はパッケージミスと思うという感じで良いよ。

レポは日本語のバグレポからの吸い上げがどの程度進んでるかわからないので、
今のところは本家のバグレポートでpackingのカテゴリで出すのが良い。
その前に本家のMLでもチェックしとくべきだけど、まあそこは端折っても可。
0446nobodyさん04/06/03 21:36ID:???
>>444
http://dev.mysql.com/doc/mysql/ja/Charset-server.html
MySQL4.0.14だとマニュアルに記述されているキャラクタセットに
関する機能がすべてある訳ではないことには注意。
# 示したサーバ設定の部分は4.0.14でも同様。
044744404/06/04 00:34ID:???
>>446
ありがとうございます。
最近始めたばかりで書いてあることはよく理解できませんが
いろいろ見て勉強したいと思います。
044842104/06/04 10:59ID:???
>>445
昨日バグレポートを見ていたら、4.0.20aに関する報告は2つあっていずれも同じエラーについてでした。
一つはロシア人の人(う〜んわーるどわいど)で、「足りないファイルは足してちょ」というような答えが返ってました。
もう一人の人は私と同じように「どうしたらいいんだ〜助けてくれ! ファイル梱包してないんとちゃうん!」と焦っていた。

ノンインストーラ版をビルドする腕もないのでどんなファイルが入っているか見てみたこともなかったですが、インストーラ版と中味は一緒だと思ってました。
まさかパッケージミスに遭遇するとは思わなかったですが、今後もエラーで見分けたいと思います。
0449nobodyさん04/06/07 14:22ID:AVijgqxq
質問っていうか相談っていうか。

order by してlimitした結果を、さらにorder by で並び替えたい場合は
どうすればいいでしょうか。
「日付が最新のものから5件分のデータを日付が古い方から順に並べて取得」
みたいな感じです。

以下は現在のコーディングです。

select count(*) from table; でレコード数を取得しておいて、

select * from table
order by date
limit レコード数-5, 5;

これをSQL一発でやりたいです。

select * from table
order by date desc
limit 0, 5
orcer by date;

こんなことがやれれば最高なのですが、もちろんこれはエラーでした。
SQL文の結果の並び順をひっくり返す方法があればそれでもいいです。
0450nobodyさん04/06/07 14:46ID:???
mysql にはダミー表(oracle でいうところの dual 表)みたいのはないのでしょうか?

select password( 'hoehoe' ) from dual ;

のようなことがやりたいのです。
045145004/06/07 15:07ID:???
すみません、解決しました。

select password( 'hoehoe' ) ;

でできました><
0452nobodyさん04/06/07 16:11ID:???
>>449
select @target := id from table order by date desc limit 0, 5;
select * from table where @target <= id order by date limit 5;
0453nobodyさん04/06/09 17:16ID:???
何度やってもタスクバーにMySQL紹介サイトで言われている
信号のアイコンが出ないんですがこれは何が原因なのでしょうか?
phpdevを使ってインスコしました。XPでSQLはVer4です。
C:\phpdev\mysql\bin\mysql.exeで起動させてます。
0454nobodyさん04/06/09 17:24ID:???
>>453
WinMySQLAdmin.exeを起動してみなはれ。
0455nobodyさん04/06/09 17:33ID:???
>>454
そのファイル名も紹介サイトに書いてあったんですが
どこを探しても見当たらないんです。ちなみにphpdevは動作確認後4.30にうp済みです。
インスコ場所もデフォルトのままです。
よければどのフォルダにあるか教えてもらえませんか?
0456nobodyさん04/06/09 17:49ID:???
自分で探せや
0457nobodyさん04/06/09 18:01ID:???
>>455
普通はmysqlのbinディレクトリだけど、phpdevは違うのかもね。
先ずは検索しる。なければパッケージされていないのでしょう。

まあ、タスクバーの信号アイコンなど無くても支障ないんで、
あきらめれば良いんじゃないか?

0458nobodyさん04/06/09 19:50ID:???
>>457
検索したんですが無かったので、パッケージされてないのだと思います。

>タスクバーの信号アイコンなど無くても支障ないんで
え!?あれが動いてる目安になってるものだと思ってました。
じゃあ安心ですね。これでようやく集中できます。ありがとん
045945704/06/09 22:53ID:???
>>458
Unix上のMySQLにはあの信号アイコンはないからねぇ。
生存確認したいなら、mysqladmin pingとかするがよろし。
0460nobodyさん04/06/10 16:47ID:???
会社で聞いた話だけど、Mysql+PHPで1GBのデータを5分ぐらいで検索できるって本当?
っていうか、そんなにかかるものなの?
0461nobodyさん04/06/10 17:33ID:???
どっちだよ
はっきりしろ
0462nobodyさん04/06/11 00:42ID:???
>>460
たった1GBで5分もかかるわけ無いだろ?
MySQLとは関係ないけどPHPのループは本当に遅いみたいね。
0463nobodyさん04/06/11 23:13ID:ReUB/uB4
教えて下さい。
MyAdminで、商品の金額が税抜きなのを
税込みの価格に一気に変更する方法を
知りたいです。お願いします。
0464nobodyさん04/06/12 00:59ID:???
486 32MB くらいのサーバなら5分くらいかかるかもよ。
0465nobodyさん04/06/12 10:38ID:9j+7vS6Z
>>463
UPDATE 金額テーブル SET price=price*1.05;
price が INTの時に小数以下がどうなるかはしらね。
0466ぺぷし04/06/17 13:39ID:t9pcSu9t
PHP初心者のため、ご教授いただけたら幸いです。

MySQLのデータベースのBLOBフィールドにバイナリデータとして格納してある複数の画像ファイル(JPEG)をPHPでブラウザに全て自動的に書き出すようにしたいのですが、
下記のようにDo Whileを使ってフィールドの全データを書き出そうとすると"Cannot modify header information- headers already sent by
output started ..."というエラーになり、画像ではなくバイナリデータのまま出力されてしまいます。

ちなみに、ループにいれず、クエリで抽出した単一の画像だけを出力する分にはこのようなエラーは出ず、画像を表示することができるので、
ループに入れることで、header情報のContent-typeの指定が繰り返されるのがいけないのだと思うのですが、試しにループの外に
header("Content-type: " . 'image/jpg'); の部分をおいてみるとファイルダウンロードダイアログボックスが開いてしまいます。

ループでの全データ書き出しはできないのでしょうか?
どなたかご存知の方、いらっしゃいましたらお助け下さい。

***********************************************************************
<table border="1">
<tr><td>ID</td><td>Image</td></tr>
<?php do { ?>
<tr><td><?php echo $row_rs1['id'] ; ?></td>
   <td> <?php header("Content-type: " . 'image/jpg');
    echo "<img src= {$row_rs1['image'] } >"; ?>
   </td>
</tr>
<?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>
</table>
0467nobodyさん04/06/17 14:36ID:???
>>466
mysqlとは関係ない話ですが。

ブラウザ                  サーバ
---------              -------------
このファイルをよこせ---->
        <----ほらやるぞ中身はtext/htmlだよ
htmlの中にimgタグがあるので
画像ファイルをよこせ ---->
        <----ほらやるぞ中身はimage/jpegだ

htmlとjpegを一回の通信で同時には送れませんので。
0468nobodyさん04/06/17 20:02ID:???
>>467
さらにmysqlとは関係ない話ですが。

mhtml(mht)というものがあります。
0469nobodyさん04/06/17 23:01ID:???
げー
0470nobodyさん04/06/18 00:38ID:???
hogera.html
------
<html><body><img src="pakera.php"></body></html>

pakera.php
------
<?php
//なんとかしてMySQLに接続してデータを取得
Header("Content-Type: image/jpg");
echo mysql_result($result,0,0);
?>

で、いかんかね?
0471ぺぷし04/06/18 11:18ID:kLx9QR2S
467、468さん
解説どうもありがとうございました。なるほどです。PHPをいきなりかぶりつきでやり始めたので、
基本が今ひとつわかっていない自分です。。。もう少し勉強します。

470さん
アドバイスどうもありがとうございました。ヒントを元に少しいじってみようと思います。

ところで今回のこのスクリプトは、サイズは小さいけれどかなりの数の画像を表示する
ウェブページで、例えば画像を追加するたびに、HTMLを書き換えなくても良いように、
画像をDBにアップロードしさえすれば、自動的に全画像がDBから書き出されるように
したいなーと思ってトライしているものです。

ただ、あまりに多くの画像をバイナリとしてDBに格納するのは、表示の際の速度とか
実際、どうなのでしょうか。

別の方法として、画像ファイル自体は別のディレクトリにアップロードするようにして、
そのファイル名とパスだけをDBに格納して、HTMLに出力するようにすることも
可能かと思うのですけど、どちらの方法の方が適しているでしょうか・・・?
0472nobodyさん04/06/18 12:11ID:???
>>471
後者

あと画像を処理するPHP書くなら
getimagesize()とか調べとくといいかも
0473nobodyさん04/06/18 16:19ID:???
>>471
画像はファイルとして置いといたほうが扱いやすいと思う。
0474nobodyさん04/06/18 20:39ID:???
>>471
それよりその画像格納専用ファイルにおいてあるファイルの一覧を取得して自動的に作成。
画像以外にタイトルとかそれ以外が欲しけりゃDBかXMLでも。
0475ぺぷし04/06/19 23:37ID:M2Vk26m1
472,473,474さん
レスどうもありがとうございました。
画像と一緒に文字列も書き出すようにしたいと考えているので、
後者の方法のほうがやはり無理がない気がしてきました。

ちなみにもう一つ質問させて下さい!
画像表示にかかる速度的にはどちらの方法のほうが速いと思われますか?

現時点ではDBを使わず、多量の画像をHTMLタグでハードコーディングして
全て書き出していますが、既に結構表示し終えるのに少し時間がかかって
いるのですが・・・
0476nobodyさん04/06/20 13:50ID:???
>多量の画像をHTMLタグでハードコーディングして全て書き出していますが

 めんどくさいですよね。自動にしとかないと。

>既に結構表示し終えるのに少し時間がかかっているのですが・・・

 速度だけで話すなら、サムネイル用画像でも用意した方がいい。
 
0477nobodyさん04/06/20 15:36ID:BKvShsgW
age
0478nobodyさん04/06/20 16:43ID:???
>>475
一回テストでDBに画像ぶち込んで一覧表示みたいなのを
作ったことあるけど展開する時にメモリ喰いまくりだし遅いし
パフォーマンスは凄く悪い
よっぽど専門的知識があってそれ用に
パフォーマンス最適化できる自信があるか、
どうしてもDBに格納しなきゃいけないって理由でもない限り
普通は画像はDBに入れない方がいいんじゃないかと
0479ぺぷし04/06/22 12:33ID:F+BhnZqz
476さん、478さん
レス、どうもありがとうございました。

478さん
やっぱり画像を直接DBに入れるのはイマイチっぽいですね。
パフォーマンスを最適化するような知恵はありそうもないので、
おとなしく画像を別ディレクトリに保存する方向で行こうと思います。

ありがとうございました!
0480nobodyさん04/06/23 20:24ID:???
MySQLでの日付計算を教えてくだされ。先月末日を知りたいのです。
PostgreSQL なら
SELECT to_char(EXTRACT('month', CURRENT_TIMESTAMP) - '1 day'::INTERVAL, 'YYYY-MM-DD');
でスコーンっと先月末日が出るんですけど、MySQLじゃどうするんですかいのぉ

バージョンが3台なもんでLAST_DAY(date)が使えないんです。
SELECT DATE_FORMAT(DATE_SUB(LAST_DAY(CURRENT_DATE()), INTERVAL 1 MONTH), '%Y-%m-%d') とかアウチ

もちろん
SELECT DATE_FORMAT(DATE_SUB(EXTRACT(MONTH FROM CURRENT_DATE()), INTERVAL 1 DAY), '%Y-%m-%d') はエラー

です。よろしく。
0481nobodyさん04/06/23 21:18ID:???
>480
自己解決。お騒がせ。

SELECT DATE_SUB(CURRENT_DATE(), INTERVAL EXTRACT(DAY FROM CURRENT_DATE()) DAY)

すっきりせんが、どうにかなった。フロ入って嫁と一発やって寝るよ。
0482nobodyさん04/06/24 04:41ID:???
俺とも一発やってくれ。
0483nobodyさん04/06/27 16:33ID:dc5u0+Vm
t1とt2が全く同じ構成のテーブルであり、それを連結したいと考えているのですが
連結条件に「t1.id=t2.id」などを付けずに連結し、更に$whereを「t1.id=1」
ではなく「id=1」などで処理させる方法はないでしょうか?
SELECT * FROM t1,t2 WHERE $where
0484nobodyさん04/06/28 09:35ID:???
>>483
t1 CROSS JOIN t2
t1の全行にt2の全行を追加
■ このスレッドは過去ログ倉庫に格納されています