- ベストアンサー
配列ようなデータ構造をSQLで管理する方法
- 配列ようなデータ構造をSQL(特にMySQL)で管理することは可能です。
- おすすめの方法としては、データベース内に別のテーブルを作成し、ユーザ情報とfollower_idsを一対多の関係で結び付ける方法があります。
- XMLやJSON形式も使用することができますが、データ操作の速さを考えると、SQLでの管理が効率的です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
- mitoneko
- ベストアンサー率58% (469/798)
- ok-kaneto
- ベストアンサー率39% (1798/4531)
関連するQ&A
- 一つのフィールドに複数の情報を持たせたいです。
データベースに詳しい方!一つのフィールドに複数の情報を持たせたいです。 例えば複数のユーザを管理するテーブルにあるID(フィールド)を 複数個をデータベースに保存する場合どうすればいいのでしょうか? 言語はJavaで、データベースはMySQLを使っています。 ↓↓各フィールド(例) -------------------------- || userName || userID || ○○ID || -------------------------- 上記の 「○○ID」というフィールド に複数の値を持たせたいのです。 String型の配列、もしくはXMLをMySQLの一つのフィールドに保存する 事はできるのでしょうか? (もし出来るのならこちらを採用したいです) それとも○○IDに関連するテーブルを作成する(?) それか最悪の場合、ユーザが増えるたびにテーブルを一つ作成 して管理するか・・・・(避けたいです) 宜しくお願いします。
- ベストアンサー
- MySQL
- ASPでSQL文を使う場合に。
クラシックなASPを利用しております。 データベース(mdb)に、ユーザIDによってフィールドが分けられた部分があります。 そこをカウントさせたいです。その際のSQL文の書きかたがよくわかりません。 イメージとしては、以下のようなかんじです。 ユーザID:A ユーザID:B データID 1 1 データID 1 1 こんなかんじでデータベースに登録されていて、ユーザIDごとにデータが入力されている(1と入力されている)フィールドをカウントしたいのです。 ユーザIDは、ログインする際に取得されるもので、個人個人で変わります。Sessionを使用しています。 SQL文の中に引数という形でユーザIDが代入されれば解決するのですが、どうもうまくいきません。なんとか教えていただけないものでしょうか。
- 締切済み
- Microsoft ASP
- phpでのSQLでのデータの追加方法
phpでのSQL実行に関して、下記のデータを追加するコードがあります。 mysql_query('INSERT INTO my_items SET maker_id=1, item_name="もも", price=210, keyword="缶詰,ピンク,甘い", sales=0, created="2010-08-01", modified="2010-08-01"') or die(mysql_error()); echo 'データを挿入しました'; 私は。それを INSERT INTO (フィールド名) VALUES(値) のSQL文で実行したいのですが、その方法が分かりません。 よろしければ、それを実行するコードを教えてください。お願いします。
- ベストアンサー
- PHP
- MySQL→PHP→JSONをしたいのですが…
現在、MySQLから取得したID一覧をJSON形式で出力したいのですが、うまくいきません。どうしたらよいでしょうか?よろしくお願いします。 なお、PHPでは以下のような処理をおこなっています。 ///////////////////////////////////////////////////////////////////// ・ ・ ・ //SQLを発行して結果セットを取得します $rst = mysql_query($sql); while ($col = mysql_fetch_array($rst)) { $return[] = $col; } function get_id($f) { return $f["dataid"]; } $return = array_map( "get_id", $return ); // JSON形式にして返す if( $return ) print Jsphon::encode( $return ); ・ ・ ・//////////////////////////////////////////////////////////////////// このようなかんじです。 この出力結果は『 ["18","19","20"] 』このようになるのでJSONでうまく処理できていないようです。 JSON形式なら『 {"dataid":"18","dataid":"19","dataid":"20"} 』 になるはずなのですが…何故でしょうか?教ええてください。お願いします。
- ベストアンサー
- PHP
- SQLで取得したフィールドをSQL文として利用
お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。
- 締切済み
- MySQL
- XAMPPでSQL文を流すとフリーズしてしまいます
現在、PHPでホームページを開発中で、XAMPPで試行錯誤しています。 数回(5~10回程度) SQL文を流すとApach自体が落ちる?サーバに接続出来ない状態になってしまいます。 自分の予想だと、接続が解除出来ていず複数接続になってしまい落ちているのかと思っています。 XAMPPのバージョンは1.7.3です。 実際に作成したログイン画面のソースコードを貼ります。 よろしくお願いいたします。 $server = "localhost"; $id = "ID"; $pw = "パスワード"; $dbname = "dbname"; $conn = mysql_connect($server, $id, $pw ); if( $conn == false ) { die("MySQL 接続エラー"); } mysql_select_db( $dbname ); $sql = " SELECT * FROM user where user_id='".$_POST["user_name"]."'"; $res = mysql_query( $sql ); while( $row = mysql_fetch_array( $res ) ) { // ログイン画面から取得したPWとデータベースのパスワード(pass)を照合する if($cryptpass == $row["password"]){ $user = new User($row["user_id"], $row["mail"]); $_SESSION["user"] = serialize($user); } } mysql_free_result($resource); mysql_close();
- ベストアンサー
- PHP
- SQL Injection対策はこれで十分?
データベースにMySQLを使用しています。SQL Injection対策を行いたいのですが、以下の方法で十分防ぐことができるのでしょうか? <?php $hoge = $_GET['ok']; $sql = "select * from ok where user = '".mysql_real_escape_string($hoge)."';"; $res = mysql_query($sql ....... ?> よろしくお願いします。
- ベストアンサー
- PHP
- FILE権限があるはずなのにSQLファイルを実行出来ない
MySQL 3.23.58(Linux)です。 testというデータベースを作成し、ユーザtestuserにこのtestデータベースへのFILE権限やUPDATE権限など一通り持たせています。 ユーザ「testuser」でMySQLにログインし、use test;とすると、Database Changedと出てデータベースの編集が可能になるのですが、 mysql -u testuser -p ***** test < backup.sql この様にbackup.sqlというSQLファイルを実行しようとすると、ERROR 1044のアクセス権限がありませんエラーが表示されてしまいます。 SQLファイルをtestデータベースに反映させるにはどうすればいいでしょうか?
- 締切済み
- MySQL
- SQL文のエラー
現在、TwitterのAPIを使って特定の@を含むツイートをmySQLに保存しようとしています。 そこで、 <?php mysql_connect("*********","*********","********")or die(mysql_error()); echo "データベースに接続しました"; mysql_select_db("********")or die(mysql_error()); echo "<br/>データーベースを選びました"; $feed=file_get_contents("http://search.twitter.com/search.atom?q=%40kenichiromogi"); //XMLパース $sxml=simplexml_load_string($feed); //パースしたものから、必要なものだけぶっこ抜く。 $i=0; while($i<=10){ $tabeta=$sxml->entry[$i]->content; $zikan=$sxml->entry[$i]->updated; $hito=$sxml->entry[$i]->author->name; //本文のUTF-8化 $utf8_tabeta=mb_convert_encoding($tabeta,"UTF-8","SJIS"); //参照文字化 $utf8_tabeta=mb_eregi_replace("\"",'"',$utf8_comment); // テーブルにレコード追加 mysql_query('INSERT INTO テーブル名 SET TIME="'.$zikan.'",NAME="'.$hito.'",COMMENT="'.$tabeta.'"') or die(mysql_error()); echo "データを挿入しました"; $i++; } ?> というプログラムを書いてみたのですが、 結果は データベースに接続しました データーベースを選びましたYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'http://twitter.com/kenichiromogi">kenichiromogi: でこ(3)子どもは' at line 1 というエラーが出てしまいます。 mySQLでは、以下のようなフィールドを作りました。 フィールド 種別 照合順序 属性 ヌル(NULL) デフォルト値 その他 操作 TIME int(10) UNSIGNED いいえ auto_increment NAME text utf8_general_ci いいえ COMMENT text utf8_general_ci いいえ どこが悪いのでしょうか? DBへの接続はできているので、おそらくSQL文がおかしいのだと思いますが、よくわかりません。 よろしくお願いします。
- ベストアンサー
- MySQL
- この配列のフォーマットの種類を教えてください
こんにちは。 WordPressのSNSプラグインであるBuddyPressで作ったユーザー登録画面のカスタムチェックボックス型のプロフィール情報のデータベースを見ると下記のフォーマットで格納されています。 json形式かと思ったのですが、正しいフォーマットではないようです。 この配列が何の形式かご存じの方は教えてください。 値は仮のものです。また「s:」の後に付く数字は値に紐付くIDですのでここは任意の数字が入るとお考え下さい。 a:3:{ i:0; s:7:"aiueo"; i:1; s:21:"kakikukeko"; i:2; s:11:"sasisuseso"; } 宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
なるほど、理解しました。 id, nameで管理するテーブルはどのようなデータ構造を取ればいいかはわかっていましたが、id, follower_idsのデータ構造は分かりませんでした。 2人フォロワーがいるときは、 3 0 3 1 のように重複させて1対1で保管するんですね。どうしてもそういう風にデータを捉えることができませんでした。 <users> <user id='0'> <name>Taro</name> <followers> <id>2</id> <id>3</id> </followers> </user> <user> .... </user> .... </users> XML風に書くと上記のような感じのデータ構造を感じしか頭にでてきませんでした。 MySQLの概要を把握するために、ドットインストール(http://dotinstall.com/lessons/basic_mysql_v2) でSQLの文の書き方は見たので、SELECT文がかなり強力なのは見ました。複合で主キーにすることもできるんですね。 フォロワーのリストの2つの対のデータは、重複しない組み合わせになって、主キーにしておけば検索が早く済むというわけですね。 最後までありがとうございました。