• ベストアンサー
  • 暇なときにでも

MySQLからフィールド名のリストを取り出し、一部のフィールド名を除外したい場合

PHP + MySQLにて テーブルからフィールド名だけを取得し、さらに一部のフィールド名を除外したいです。 レコードじゃないのでis not構文は使えませんでした。 何かいい方法があれば教えてください。 $sql = "select * from table"; //tableテーブルからフィールド名を取り出し $rs = mysql_query($sql); $fields = mysql_num_fields($rs); $column = array(); for ( $i=0; $i<$fields; $i++ ) { $column[$i] = mysql_field_name($rs, $i); }

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数2
  • 閲覧数706
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

>一部のフィールド名を除外したいです。 $fieldは配列なんだからunsetしてやればいいのでは?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

unsetの構文は知りませんでした。 おかげで解決しました。ありがとうございます。

その他の回答 (1)

  • 回答No.2
  • hrm_mmm
  • ベストアンサー率63% (292/459)

意図がよく解らないけど、select * じゃなくて必要なfield のみ取ってくれば? それとも、「1番目が要らない」とかの条件が有れば、ループ内で if($i == 1)next; とでもいれてやれば、スキップできるけど

共感・感謝の気持ちを伝えよう!

質問者からのお礼

一部を除くすべてのフィールド名を取得したかったので必要なものだけ取り出すのは面倒です。 ループ内でif文を使う方法は知りませんでした。 問題は解決しましたが今後の参考にさせていただきます。

関連するQ&A

  • MySQL+PHPでリストから詳細表示

    MySQL+PHPで顧客情報のデータベースを作っているところで詰まってしまいました。下のようなテーブルがあります。 number name furi ・・・ ------------------------- 1 北  kita 2  南 minami 3    東 higashi 4    西 nisi このテーブルのリスト一部分を表示して 詳細ボタンを押すと顧客情報の詳細が表示 できるようにしたいのですが、どのように すればいいかまったくわかりません。 一覧表示      名前 フリガナ   詳細  北   kita 詳細  南   minami  詳細 西   nisi こんな感じで詳細を押すと、顧客情報の詳細が 表示されるようにしたいのですが。 一覧を表示させるPHPはこんなかんじで作りました。 //SQL文 tab1表から全行を取り出し、number列の昇順に整列する $sql = "select * from addrmain order by number"; //SQL文を実行する $rs = mysql_db_query($db,$sql); //列数を取得する $num = mysql_num_fields($rs); //HTML文を出力 テーブルの開始を指定 print("<table border=1>"); //test表の列数と同じ回数を繰り返す for ($i=0;$i<$num;$i++){ //HTML文を出力 列名を <td>で囲んで出力 print("<td>".mysql_field_name($rs,$i)."</td>"); } //test表の行数と同じ回数を繰り返す while($row=mysql_fetch_array($rs)){ //HTML文を出力 表の行の開始<tr> を出力 print("<tr>"); //test表の列数と同じ回数を繰り返す for($j=0;$j<$num;$j++){ //HTML文を出力 列の内容を <td>で囲んで出力 print("<td>".$row[$j]."</td>"); } //HTML文を出力 表の改行</tr> を出力 print("</tr>"); } //HTML文を出力 テーブルの終了を指定 print("</table>"); なにをどのようにしたら良いかお知恵をお貸しください。お願いします。

    • ベストアンサー
    • MySQL
  • mysqlからmysqliへの変更点

    お世話になります。 PHPでmysqlのデータをhtmlで表示するソースを組んでいます。 初心者なもので、サンプルを見ながら組んでいるのですが、 そのサンプルがmysql_queryなどを使っていました。 しかし、今は推奨されず、mysqli_queryなどを使うとか。 そこで、単純にiを付け加えただけなのですが、そう簡単に 行きませんでした。 どの部分をどのように修正すればよいのかを教えてください。 ------------------------------------------------- <?php header("Content-Type:text/html;charset=SHIFT_JIS"); ?> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <?php $srv = "localhost"; // サーバー名 $id = "xxxxx"; // ユーザーID $passwd = "xxxxx"; // パスワード $dbn = "sample"; // データベース名 $sql = "SELECT * FROM sample1"; // SQL文 // データベースに接続する $db = mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs = mysql_query($sql,$db); $num = mysql_num_fields($rs); //--- テーブルのレイアウト --- 開始 -----------------------> print("<TABLE border='1'><TR>"); for($i=0; $i<$num; $i++) { print("<TH>".mb_convert_encoding(mysql_field_name($rs,$i),"SJIS","EUC-JP")."</TH>"); } print("</TR>"); while($row = mysql_fetch_array($rs)) { print("<TR>"); for($j=0; $j<$num; $j++) { print("<TD>".mb_convert_encoding($row[$j],"SJIS","EUC-JP")."</TD>"); } print("</TR>"); } print("</TABLE>"); mysql_free_result($rs); mysql_close($db); //--- 終了 ---> ?> </BODY> </HTML> ---------------------------------------------- 他サイト様からの引用ですが、何卒よろしくお願いいたします。

    • 締切済み
    • PHP
  • 値が「1」のカラム名を求めたい。

    任意の列の、値が「1」のカラム名を求めるにはどうしたらいいでしょうか? PHP Version 5.1.6 MySQL - 5.0.45 で運用しています。 そもそものテーブルの作り方がおかしいのかも知れませんが、 以下のようになっています。 このテーブルで、IDが「40」の列の値が「1」のカラム名を求めたいのです。 どの様にしたらいいでしょうか? ※カラム名「会員番号110」は実際は整数になっています。 ID  会員番号110  会員番号111  会員番号112  会員番号113  40  1       1       0       1       41  0       1       1       1   $sql ="select * from `member_sub_tbl` where `ID`='$ID'"; $result = mysql_query($sql, $con); //カラムの数を取得する $numFields = mysql_num_fields($result); for($i=0;$i<$numFields;$i++){ $nameFields[] = mysql_field_name($result, $i); } print_r($nameFields); これで、カラム名は全て配列に入るのですが、値が「1」のと限定する方法がわかりません。 ご教授、よろしくお願いいたします。    

    • ベストアンサー
    • PHP
  • mysql_field_lenの返り値がvarcharで3倍になる

    PHPの関数「mysql_field_len」で、わからない点がありました。 $id = mysql_list_fields ( 'DbName', 'TableName' ); $num = mysql_num_fields ( $id ); for ( $i=0; $i<$num; $i++ ) { print mysql_field_name ( $id, $i ) ."<BR>\n"; print mysql_field_len ( $id, $i ) ."<BR>\n"; print mysql_field_type ( $id, $i ) ."<BR>\n"; print mysql_field_flags ( $id, $i ) ."<BR><BR>\n"; } として、各フィールドの情報を表示させました。 すると、mysql_field_typeが「string」(実際にはvarchar)の時、 mysql_field_lenの返す値が3倍になって返ってきます。 例:varchar(8)→24 これは何の値を返しているのか、また設定の問題なのか、 ご存知の方はいらっしゃいますでしょうか。 よろしくお願いいたします。 環境: PHP4.3.10 MySQL4.1.10

    • 締切済み
    • PHP
  • フィールド名に日付を入れたい

    いつも回答ありがとうございます。 MySQL&PHPを利用しております。 下記のように書いたのですが、フィールド追加できません。 $today = date("ymd"); $sql = "ALTER TABLE book1 ADD $today TEXT NOT NULL"; $query = mysql_query($sql, $link); $todayの所を、 $today = "d" . date("ymd"); のように文字を先頭に置くなどするとフィールドを追加できました。 日付はフィールド名として指定できないのでしょうか? CRONで毎日、日付のフィールドを追加して、データの変化を見ていきたいと考えています。 わかる方お願いします。

    • ベストアンサー
    • MySQL
  • PHP、MySQLのUpdateで数式の答えをそれぞれのセルに挿入

    こんにちは。PHPの初心者です。PHP内でのMySQL Updateの使い方で苦労しています。 table02に4つのフィールドがあります。このうちで使うのは「num」と「percent」です。結局、numにあるセルの数を一定数($total_num_rows)で割って100を掛けたいのですが。 $sql = "SELECT * FROM $table02"; $result = mysql_query($sql,$my_sql_connection) or die(mysql_error()); WHILE ($row = mysql_fetch_array($result)) { $num = $row["num"]; $percent = $num/$total_num_rows*100; $update_percent = "UPDATE $table02 SET percent = '$percent'"; $update_result = mysql_query($update_percent,$my_sql_connection); $percentをprintとすると、それぞれの行に適した数字が数式に従って表示されます。でも結局テーブル上では同じ数字が「percent」のフィールド下のセルに挿入されてしまいます。どうやったらそれぞれのセルにprintで表示されるような正しい数字を挿入することができるでしょうか? どうぞ宜しくお願いします。

    • 締切済み
    • PHP
  • mysqlのフィールド名

    テーブルを作成しようとしたとき、フィールド名にピリオドが入るとエラーが出ます。 例: Create table tableA ( Idx MEDIUMINT, 0hr DECIMAL(6,2), 1hr DECIMAL(6,2), 1.5hr DECIMAL(6,2), 2hr DECIMAL(6,2) ); ERROR 1060 (42S21) at line 1: Duplicate column name '5hr_1st' フィールド名にピリオドは使えないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLで、テーブル内のフィールドの名前を変えたいのですが・・・

    MySQL4.0.20 Linuxを使っています。 テーブル内のフィールドの名前を変えたいのですが、alter table の modifyはカラムの属性を変えるもので、名前を変えるのは運用途中でできるのかなと、ふと疑問に思いました。 alter tableなどでできるのでしょうか? 結局サーバーを止めて、バックアップし、テーブル定義を書き直して、リストアするしか無いのでしょうか?

    • ベストアンサー
    • MySQL
  • mysqlのフィールド名に使える記号を教えてくだ

    mysqlのフィールド名に"event_num","event-num"のように英字の間に'_'や'-'を使うことはできますか? もし使えない場合、ほかに使用できる記号があれば教えてください。

    • ベストアンサー
    • MySQL
  • 配列にダブルクォーテーション付の値をいれたい

    以下のようにmemberテーブルから抽出したnameKanji配列に、 ダブルクォーテーション付の値をいれたいのです。 memberテーブルには、 1.田中 2.斉藤 3.鈴木 とはってるとして、 $array_nameKanji配列には、最終的に、 {"田中","斉藤","鈴木"} といれたいのです。 ***************************************** $sql = "SELECT nameKanji FROM member"; $rs = mysql_query($sql,$conn); $totalMember = mysql_num_rows($rs); for($i=0 ; $i<$totalMember ; $i++) { $rec = mysql_fetch_assoc($rs); → $array_nameKanji[$i] = $rec["nameKanji"]; } *************************************************** たとえば、 $array_nameKanji[$i] = "\"" . $rec["nameKanji"] . "\""; こうしてみると、 {"""田中""","""斉藤""","""鈴木"""} となってしまいます。 うまくやる方法をおしえてください。

    • ベストアンサー
    • PHP