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

mysql ヘルプ!

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/01/22 16:08ID:kMbsTQE3
リモートから家(常時接続)のmysqlサーバにつなげません
状況を詳しく書きます
PHPが動くプロバイダーのディレクトリにおいた自分の家の
mysqlサーバを操作するPHPに
$db = mysql_connect("mysqlサーバのip:3306","ゆーざ","ぱす");
と書いたのですが、駄目でした。
どうすればいいのでしょうか?
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の全行を追加
0485nobodyさん04/06/28 11:34ID:???
>>484
SELECT * FROM t1 CROSS JOIN t2 WHERE t1.id =1;
では成立するのですが、
SELECT * FROM t1 CROSS JOIN t2 WHERE id =1;
ではエラーになってしまいます。

テーブルを2個以上JOINする場合にWHEREを
「t1.id =1 || t2.id =1 || t3.id =1」と記述して行くしかないのでしょうか?

マニュアルには「同様に、JOIN と CROSS JOIN に関しても、MySQL 4.0.11 以降
でのみ条件を指定できます。」と書いており、4.0.11以降でなければ「id=1」という条件
では出来ないという事でしょうか?
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
と並びます
■ このスレッドは過去ログ倉庫に格納されています