• 締切済み

MySQLではカーソルを使うことができない?

MySQLでデータベースの勉強をしています。 先頭からレコードを1件ずつシーケンシャル処理を行う時、カーソル定義をすればFETCHが使えそうです。 でもMySQLにはカーソルがないようです(SQLポケットリファレンス 技術評論社 平成17年版) ではどのような方法があるのでしょうか。 或いは最新版のMySQLではカーソル変数定義できますか?

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ちょっと検索すれば http://dev.mysql.com/doc/refman/5.5/en/cursors.html くらいは出てくる.

関連するQ&A

  • mysqlで変数を使う方法

    SQL文にPHPの変数のように変動する値を指定することはできますでしょうか。 データベースから特定のレコードを拾ってきて PHPのPOSTメソッドでその値を送信するシステムを作ろうとしています。 具体的には、データベースに名簿(IDと名前だけの簡単なものです)を 予め作っておき、送信ボタンをクリックしたユーザーのIDと紐付いている 名前を送信したいと考えています。 [MySQL] table:meibo id | name ------------ 1 | itou 2 | yamada 3 | suzuki [PHPソース](一部抜粋) ------------ $sql = mysql_query('SELECT * FROM meibo where id=【ここを変動させたい】', $connect); $sql = mysql_fetch_array($sql); $req->addPostData("user_name", $sql['name']); ------------ $idに操作しているユーザーのIDが代入されているとして 以下のようにmysql_queryの中で実行しているSELECT文に$idを利用することは可能でしょうか。 SELECT * FROM meibo where id=$id もし上記のような方法が無理な場合、 代替案をご提案いただけると非常に助かります。 読みにくい文章で恐縮ですが、 どうかお助けください。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHP+MySQLの構造

    参考書MySQL×PHP(技術評論社)を読んだり検索してサイトをいくつか見てるんですが、どうしてわからなかったのでここで質問させて下さい. http://dev.mysql.com/doc/mysql/ja/select.html によると SQL_CALC_FOUND_ROWS(バージョン 4.0.0 以降)では、LIMIT 節を無視した場合に結果セットに含まれるすべてのレコード数を計算するよう MySQL に指示できる。 その後、SELECT FOUND_ROWS() を使用して、計算されたレコード数を取り出せる。 とありますが、意味がよく分りません もう少し分りやすい説明をしてるサイトを教えていただけると助かります. MySQLのデータ(テーブル・レコードセットなど)のテキストなどで格納されてるファイルはあるんですか 一つのphpファイルで2つ以上のデータベースを扱うことについて説明してあるサイトを教えて下さい

    • ベストアンサー
    • PHP
  • PHP,MYSQLで特定例を表示する場合、

    PHP、MYSQLで特定例を表示する場合のsql文が分かりません。 データーベースmeibo no | name | sex | age | 1 | 一郎 | 男 | 20 | 2 | 一子 | 女 | 22 | 3 | 二郎 | 男 | 25 | 4 | 二子 | 女 | 27 | 女のみを表示したい場合を考え以下のようなコードを作りましたが上手くいきません。 <?php //データーベース接続 require_once('../require/dbcon.php'); //件数の表示 $recordSet = mysql_query('SELECT COUNT(sex) AS record_count FROM meibo WHERE sex(女)'); $data = mysql_fetch_assoc($recordSet); echo '<b>','※ 女性メンバー','</b> ('.$data['record_count'].' 人のデーターがあります。)<br /><br />'; //テーブルセット $recordSet = mysql_query('SELECT sex FROM meibo WHERE sex(女)'); while ($table = mysql_fetch_assoc($recordSet)) { echo $table['no']; echo $table['name']; echo $table['age']; } エラーでは $data = mysql_fetch_assoc($recordSet); と、 while ($table = mysql_fetch_assoc($recordSet)) のラインが出るのですが 何が悪いのか良く分かりません。 私の考えではsql文が悪いのではないかと思うのですが、どなたかお教えくださいませ。

    • ベストアンサー
    • PHP
  • カーソルで取得した項目のサイズについて質問です。。

    カーソルで取得した項目のサイズについて質問です。。 SELECTした項目のサイズが下記の場合、 レコード格納変数.Cの最大サイズは(14)で、それ以上のバイト数値を代入すると エラーになると思ったのですが、エラーになりませんでした。(最大28バイトになった) レコード格納変数の取得した項目サイズは何で決まってくるのでしょうか? この項目を別テーブルのVARCHAR(20)の項目へ設定しようと思っているのですが、 理由がわからないので、このままでいいのか、サイズを考慮した設計にするべきか困っています。 <oracle 9i> TABLE1{A VARCHAR2(4), B VARCHAR2(10)} DECLARE  CURSOR カーソル変数 IS SELECT A||B AS C FROM TABLE1;  レコード格納変数 カーソル変数%ROWTYPE; BEGIN  OPEN カーソル変数  LOOP   FETCH カーソル変数 INTO レコード格納変数;   EXIT WHEN カーソル変数%NOTFOUND;    :    レコード格納変数.C := VARCAHR2(15) --代入可能?    :    INSERT 項目1 VARCHAR(20) TABLE2 レコード格納変数.C;    :  END LOOP  CLOSE カーソル変数 END;

  •  cobolのカーソルについて

     cobolのカーソルについて  初投稿させていただきます。ですので体裁やルールを守れていない場合は、ご指摘願います。  cobolにおいて埋め込みSQL文によるカーソルをオープンし、fetchでテーブルを読み込む作業についてなんですが、一度のプログラム起動において同じテーブルを複数回読むにはどのようなソースを描けばよいのでしょうか。  具体的にはあるテーブルの5個のレコードを上から順に何度も読むといった次第です。  お分かりになられる方がいましたら、ご指導願います。よろしくお願いします。

  • COUNT(*)の使い方

    COUNT(*)の使い方が分からないので質問します。 直接のSQLでCOUNT(*)を使ってレコード数を表示させることはできましたが PHPでのSQLではCOUNT(*)をPHPのソースの変数に代入する方法が分かりません。 $sql = 'SELECT ip, COUNT(*) FROM webdb'; $ret = mysql_query($sql); $rowval = mysql_fetch_row($ret); この場合、$rowval[1] がテーブルwebdbのレコード数だと 思いましたが、間違っているところはございませんか?

    • ベストアンサー
    • MySQL
  • phpでmysqlの結果がresouceにならない

    いつもお世話になります。初心者で何も知識がないまま進めておりますが故に行き詰っております。詳しい方からのアドバイスお願い致します。 今回はphpでmySQLの結果をmysql_fetch_assoc() で展開しようと思ったら以下の文章が出てきました。 mysql_fetch_assoc() expects parameter 1 to be resource, object given in・・・ 調べてみると変数の型(この場合は$resouce)がresourceではないとのことで、戻ってきた型を調べてみるとarrayで戻ってきているようです。 問題となっている箇所は以下の単純なクエリだとは思うのですが、何が原因か分からず。。。 $sql = "SELECT * FROM テーブル名;"; ※テーブル名には変数がありケースバイケースでテーブル名が変わります $resouce = $mysqli -> query($sql) or die(mysqli_error()."エラー"); while ($data = mysql_fetch_assoc($resouce)) { ・・・ お分かりの方がいらっしゃいましたら、ぜひよろしくお願い致します。 •ソフトウェア: MySQL •ソフトウェアバージョン: 5.0.67 •php5

    • ベストアンサー
    • PHP
  • MYSQLから複数の情報を取得する

    inputに入力されたアドレスにメールを送るプログラムです。 メールの内容はmysqlにあるmailカラムの情報と一致したレコードのbunカラムの情報を送信します。 $mail = 'aaa@gmail.com'; $dbServer = ''; $dbUser = ''; $dbPass = ''; $dbName = ''; $flag = TRUE; // MySQLデータベースに接続 if (!$link = mysql_connect($dbServer, $dbUser, $dbPass)) { $flag = FALSE; } $sql = "SELECT * FROM table_t WHERE `mail` = '$mail' LIMIT 1"; $query = mysql_query($sql, $link); $row = mysql_fetch_array($query,MYSQL_ASSOC); if ($row[key]) { // 送信する mail($mail, 'kenmei', $row[key]); } このように作ってきたのですが、mailカラムの情報を一意じゃなくして、2つ該当するレコードがあった場合、2つのkeyを1通のメールにして送りたいと考えてます。 どのように書き換えればいいでしょうか? 環境は、さくらサーバーを使用しています。 よろしくおねがいします。

    • 締切済み
    • PHP
  • phpのmysql_fetch_arrayに該当する関数はありますか?

    以下のようなphp、MySQLのセレクト文は perlだとどのようになるのでしょうか? $sql="SELECT abc,xyz FROM table "; $res=mysql_query($sql,$con) or die("データベースを検索できませんでした。 mysql_error(); "); $i=0; while($row=mysql_fetch_array($res)) { $abc[$i]=$row['abc']; $xyz[$i]=$row['xyz']; $i++; }

    • ベストアンサー
    • Perl
  • mysqlについてサンプルなど教えてもらえませんか

    すいません。今phpなどを使いウェブサイトを作っているのですが、データベースがどうしても 必要となり、参考サイトなどを見ながら作りました。 ほとんどできたのですが、最後に一部データベースの関数などでわからない事があり困っています。 (正直私はプログラムはphp程度が少し分かる程度で、データベースも単純な使い方しかしない 予定なので参考サイトをざっと見ただけでmysqlの事がほとんど分かりません) ググってそれらしい物を探してはいるのですが、私がやりたい事はデータベースから 件数を取りたいだけです。 取った件数をphpで表示したいのですが、何時間やっても良くわかりません。 申し訳ないんですが取り出した後その件数をphpのechoで表示するまでをサンプルとして書いてもらえませんか?(可能であれば「ここでこのような処理が行われている」とコメントがもらえると助かります) データベース関係はphpと違って初心者用のサイトなども無く、書いてある事がほとんど分かりません。 (ここでSELECT COUNT(*)を使うと教えてもらったのですが、SELECT COUNT(*)でググっても サンプルなども出てきません) $pdo = new PDO("mysql:dbname=aaa", "root"); $pdo->query("set names utf8;"); // ------------------------------------------------ $sql = $pdo->query("SELECT COUNT(*) FROM bbb"); $stmt = $pdo->query($sql); $stmt->execute(); $count=$stmt->rowCount(); echo $count; ----------------------------------------------- $result = mysql_query("SELECT COUNT(*) FROM bbb"); $row = mysql_fetch_assoc( $result ); echo $row;

    • ベストアンサー
    • MySQL