PHPでMYSQLの最大値取得方法!?

このQ&Aのポイント
  • PHPでMYSQL内テーブル(hogehoge)の「no」フィールドの最大値を取得する方法について教えてください。
  • 現在、PHPでMYSQL内テーブルの「no」フィールドの最大値を取得しようとしていますが、うまく結果が得られません。echoで出力すると「Resource id #4」となってしまいます。正しい方法を教えていただきたいです。
  • 環境はWindowsXPで、mysqlのバージョンは5.0.51、phpのバージョンは5.2.5です。どうすれば「no」フィールドの中の最大値を取得できるでしょうか?
回答を見る
  • ベストアンサー

phpでmysqlを使ってデータベース内の最大値の取得

PHPでMYSQL内テーブル(hogehoge)の「no」フィールドの最大値を取得をしたいのですが、ほしい結果が得られません。 【PHP】 -------------------------------------------------------------- $my_Max = "select max(no) from hogehoge"; $kekka_max = mysql_query($my_Max); -------------------------------------------------------------- no→今回最大値を取得したい項目(int) 【結果】 これをechoで出力すると、 ----------------------------- Resource id #4 ----------------------------- となってしまいます。 「no」の中の最大値を取得したいのですが、どうしたらよいでしょうか? 【環境】 WindowsXP mysql:5.0.51 php:5.2.5

  • PHP
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

count()でなくmax()か。 $sql = "select max(column) as mx from hogehoge"; $res = mysql_query($sql); $row = mysql_fetch_assoc($res); echo $row['mx']; // アクセスできない、とは書いたものの // $row['max(column)']とすることで取得できた気もする。 // 気持ち悪いから普通やらないと思うけど。

saki888
質問者

お礼

表記の方法でやったらできました。 mysql_query()の返り値についてよく分かっていなかったです。 ありがとうございました。

その他の回答 (1)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

>【結果】 >これをechoで出力すると、 >----------------------------- >Resource id #4 >----------------------------- 何をechoしたのか分かりませんが。。 mysql_query()の返り値はリソースなのでechoしてもDBの値が取れるわけではありません。 mysql_fetch_array()やmysql_fetch_assoc()を使いましょう。 http://jp.php.net/manual/en/function.mysql-fetch-array.php http://jp.php.net/manual/en/function.mysql-fetch-assoc.php またSQL関数を使うのであれば別名をつけてあげないと外部からアクセスできません。 select count(column) as cnt from hogehoge コード的には以下になるでしょう。 $sql = "select count(column) as cnt from hogehoge"; $res = mysql_query($sql); $row = mysql_fetch_assoc($res); echo $row['cnt']; //print_r($row);

関連するQ&A

  • phpでmysqlで作成したdbを表示したい。

    現在phpのプログラムの学習を行っています。、 phpmyadminで作成したデータベースを読み込もうとしているのですが、うまくいきません。 参考書やサイトも参考にしたのですが、警告が出ています。 よくわからなくなってきましたので、教えていただきたいです。 ------------------------------------------------------------------------------- ・実行結果 Resource id #31Resource id #40 接続ID: 選択の成否: 結果ID: 行数: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\job\job.php on line 45 ------------------------------------------------------------------------------- ・ソース <?php /*$con = mysql_connect('localhost','root','root') or die("接続できません"); print "接続に成功しました。"; mysql_close($con);*/ $url = "localhost"; $user = "root"; $pass = "***"; $db = "***"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM t01prefecture"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //結果保持用メモリを開放する mysql_free_result($result); echo "$link"; echo "$sdb"; echo "$result"; echo "$rows"; echo "<br>"; echo "接続ID:<?= $link ?><br />"; echo "選択の成否:<?= $sdb ?><br />"; echo "結果ID:<?= $result ?><br />"; echo "行数:<?= $rows ?><br />"; $recordSet = mysql_query('SELECT * FROM my_items'); while($data = mysql_fetch_assoc($recordSet)){ /*このあたりが45行目 */ echo $data['item_name']; /* ここの値を変える*/ echo '<br>'; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。");

    • ベストアンサー
    • PHP
  • mysqlのデータベースの内容をphpでだしたいのですが。。。

    初歩的な質問で、自分なりにネットで調べたり、DBに詳しい友人にも聞いたのですが、どうしてもできなかったため質問させていただきます。 【やりたいこと】 データベースに中の文字を変数として表示させたい 【結果】 「Resource id #3」とでる 【データベースの中身】(テーブル名 genre) genreid   genre 1     アクション 2      RPG 3     アドベンチャー ・       ・ ・       ・ 【作ったソース】 <?php mysql_connect('****','****','****'); mysql_select_db('****'); mysql_query("set character_set_client=utf8"); mysql_query("set character_set_connection=utf8"); mysql_query("set character_set_results=utf8"); $genre_name_sql = "select * from genre where genreid = 1"; $genre_name = mysql_query($genre_name_sql); echo $genre_name; ?> 私としてはこれで 「アクション」 と出したいのですが、何かが悪いのか出ません。 お忙しいところ恐縮ですが、 よろしくお願い致します。 (情報が足りない場合はおっしゃってください。。。)

    • ベストアンサー
    • MySQL
  • mysql 最大値 取得 

    mysqlのデータベースから、列の最大値を取り出したいのですが、 以下のように書いているのですが、取得される値が1しか返ってこないです。 間違っているところはあるでしょうか? perlで書いています。 my $dbh = DBI->connect("DBI:mysql:host=${db_host};database=${db_name}", $db_user, $db_pass); my $sth = $dbh->prepare("SELECT MAX(列名) FROM テーブル名"); my $rv = $sth->execute(); print "$rv";

    • ベストアンサー
    • MySQL
  • PHP/mySQLでインサートができません。

    PHPとmySQLを勉強中の初心者ですが、よろしくお願いします。 PHPで簡単なインサート文を作ってそれをmySQLに保存しようとしているのですが、以下のエラーが出てしまいます。 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource プログラムは以下の通りです。HOSTNAME,USERNAME,DBPWDは別のところで定義していますが、mysql_connect, mysql_select_dbではエラーにならないので、データベースの選択まではうまく行っていると思うのですが。 $conn = mysql_connect(HOSTNAME, USERNAME, DBPWD); if(!$conn){ die("Logon Failure to mysql Server."); } $db = mysql_select_db(DBNAME, $conn); if(!$db){ die("Cannot access to the DB"); } foreach($csv_ary as $a => $b) { $query = "INSERT INTO TEST field_a VALUES $a"; if (!mysql_query($query, $db)){ echo "更新失敗: SQL=$query<br>"; } } mysql_close($conn); field_aはvarchar(10)でPrimary_key, NOT NULLの設定です。 Foreachで展開した配列の値はちゃんと長さ10の文字列が入っています。 PHP 4.3.11は mySQL 4.0.27です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • IDが最大値のレコードに項目を追加

    MYSQLで、一度書き込み処理をさせ、 書き込んだIDを取得して加工したsubidを、 テーブルに再接続をしてIDの最大値を取得して、 それを最新のレコードとして追加で項目を書き込もうと思うのですが、 なぜかうまくいきません。 再接続の際に、先程書き込んだレコードを読み出す方法がまずいのでしょうか? どなたかご教授ください。 よろしくお願いいたします。 -----------省略----------- <?php $subid = $nosel . $finish ; $update_id = max(id); $db = mysql_connect("localhost","hogehoge",""); mysql_select_db("hogehogeuser"); $query = "update hogehoge set subid = \"$subid\" where ID = $update_id\""; mysql_query($query); mysql_close($db); ?>

  • PHPからMySQLのデータベースが作成できない

    PHP:4.4.4 MySQL:4.1.21 です。 PHPからデータベースを作りたいのですがうまくいきません。 以下のように記述しています。 $sql = "CREATE DATABASE ".$DBNAME; $rst = mysql_query($sql,$con); $DBNAMEには作りたいデータベースの名前が入っています。また、$conにはIDが入っており接続はできているようです。しかしこの後で$rstをechoするとTRUEでもFALSEでもなく、何も入っていない状態です。 これはどうすればデータベースをcreateできるのでしょうか? 非推奨のようですがmysql_create_dbを使ってたところ画面が真っ白になってしまいました。

    • 締切済み
    • PHP
  • 最大値を取得できない

    最大値を取得して、一意の番号を付加するルーチンです。 最大値を取得できなくて困っています。 // データを取得して表示 $query = "SELECT MAX(cid) FROM " . LB_TABLE_CAT; $result = @mysql_query($query, $db); $num_rows = @mysql_num_rows($result); if($num_rows > 0) { $row = @mysql_fetch_assoc($result); $cid = $row['cid']; $cidに値が入るはずですが、1と出力されます。 テーブル(LB_TABLE_CAT) cid name 1  あああ 2  いいい 3  ううう 100 えええ となっています。 想定では100が入るはずですが、どこがおかしいのでしょうか? phpmyadmin上では、ちゃんと100が出力されます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでデータベース(mySQL)から値を取りだすには

    PHPで値をmySQLに保存するコードを作成するのに 成功したのはいいのですが、値を取り出して 出力するコードがうまく書けません ネットで調べてみたり、参考書を読んで やっているのですがうまくいきません こういうコードを書いたのですが <?php $conn=mysql_connect("localhost", "user", "pass"); if (!$conn) { die('接続失敗です。'.mysql_error()); } mysql_select_db("database", $conn); mysql_query("SET NAMES 'ja-utf8'", $conn); $sql='SELECT caram, FROM table'; $row=mysql_query($sql, $conn); $res=mysql_fetch_assoc($row); echo htmlspecialchars($res, ENT_QUOTES); mysql_close(); ?> どこが間違っているかご指摘いただけると ありがたいです。

    • 締切済み
    • PHP
  • MAX値が取得できない

    次のような形でMySQLデータベースからデータを取得するように組んでいます mainテーブルのkeyフィールド(INT型)の最大値を取得したいと思っています。 function getResult($query){ $result[result]=mysql_query($query,$this->connect); $result[count]=@mysql_num_rows($result[result]); return $result; } function getSelect($field,$table,$where){ $query="select $field from $table $where;"; $result=$this->getResult($query); return $result; } これが別ファイルにあり、もちろん先に読み込ませ、データベースには接続した状態で、 $results=$db->getSelect("max(key)","main",""); $rows=mysql_fetch_array($results[result]); を実行したのですが、 mysql_fetch_array(): supplied argument is not a valid MySQL のエラーとなり、 'max(key)'とすると 最大値が取得できずそのままmax(key)という文字列が返るだけ max'(key)'とすると mysql_fetch_array(): supplied argument is not a valid MySQL のエラーがでます。 MAXなど大文字に変えても同じ結果です。 maxやavgは今回初めて使ってうまくいかないのですが、今までこの構文で通常のselect * fromとかorder by、limitなど他のものは何の問題もなく動きます。 どこをどうかえてやればMAXを取得できるでしょうか。

    • ベストアンサー
    • PHP
  • MySQL + PHP 同じテーブル内でのクエリについて

    PHP+MySQL勉強中の初心者です。 PHP+MySQL環境でのクエリについて、以下の条件でのクエリ結果を求めたいのですが、上手くできませんので、質問させてください。 MySQLのテーブルは以下のようになっています。 date        no   name ---------------------------- 2009-12-10   15   takada 2009-12-15   10   hirooka 2009-12-18   13   wakada 2010-01-10   15   takada 2010-01-11   13   wakada ----------------------------- 出力させたいクエリは、前月データを元にno列をKEYとした重複チェックです。 前月データを全件出力し、当月データに同じnoがあった場合、当月日付を 表示させたいと思っています。 (PHPで希望する出力結果) date       no   name     date2 ---------------------------------------- 2009-12-10  15   takada   2010-01-10 2009-12-15  10   hirooka 2009-12-18  13   wakada   2010-01-11 ----------------------------------------- 以下のようなソースでは、1行のみの出力結果しか表示されず、 whileの使い方に問題があると思うのですが、どのように解決すれば良いのかが解りません。 どうか、解決策をよろしくお願いいたします。 $mysql->query("SELECT * FROM xxxx where date LIKE '$y-$m%'"); while($row = $mysql->fetch()){ $date = $row["date"]; $no = $row["no"]; $name = $row["name"]; $mysql->query("SELECT * FROM xxxx where upddate LIKE '$y2-$m2%' and no = '$no'"); while($row = $mysql->fetch()){ $date2 = $row["date"]; echo <<<EOT <td>$date</td> <td>$no</td> <td>$name</td> <td>$date2</td><tr> EOT; } }

    • 締切済み
    • PHP