• ベストアンサー

配列をMySQLの1カラムに入れ、再利用出来る?

MySQLの1カラムに、下記のような配列を保存したいのですが、どうすればいいでしょうか? Array ( [0] => ./im/1a.j [1] => ./im/2.j [2] => ./im/9_1.j [3] => ./im/4.j [4] => ./img/9_3.j ) ・配列として保存できるのでしょうか? ・文字列連結とかして保存し、取り出した後、再度、配列形式にするのでしょうか? それは具体的にどうするのでしょうか?

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
noname#223623
noname#223623
回答No.2

正解は一つじゃないですね。質問者さんの考えるのも正解。#1 さんがいう serialize 関数も正解。状況によってどれが最適かは違ってくるはず。適材適所ということですね。 参考 URL では serialize()、var_export()、json_encode()、http_build_query() の4つの方法を紹介している。それぞれの方法で、配列を文字列に変換するサンプル、変換した文字列から配列に戻すサンプルが書いてあるからわかりやすいんじゃないかな。 参考URL: [PHP] 配列を文字列に変換して取っておく4つの方法

参考URL:
http://suin.asia/2011/08/09/4_tips_to_preserve_array_as_string
re999
質問者

お礼

回答ありがとうございました。 リンク先、大変分かりやすかったです!

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>配列として保存できるのでしょうか? 配列のまま文字列型のカラムに入れることは出来ません(SQL文が書けないですよね)。 >文字列連結とかして保存し、取り出した後、再度、配列形式にするのでしょうか? それは具体的にどうするのでしょうか? serializeして保存しておいて、取り出したデータをunserializeして使うとかですかね(implode/explodeでもいいですが、それだと区切り文字の選択に配慮しないといけないので)。 http://php.net/manual/ja/function.serialize.php http://www.php.net/manual/ja/function.unserialize.php

re999
質問者

お礼

回答ありがとうございました。 参考になりましたー

関連するQ&A

  • JSON変換データをjavascriptへ渡したい

    json_encode()関数で、JSON形式の文字列に変換した配列データをjavascriptへ渡したいのですが、 いつのまにか、ただんの文字列になってしまいます。なんででしょうか? ■コード $jsondata= json_encode($originalarray) <script type="text/javascript"> var result = <?php echo($jsondata) ?>; alert(result); </script> ■変数 ・$originalarray Array ( [0] => ./im/1a.j [1] => ./im/2.j [2] => ./im/9_1.j ) ・jsondata [".\/im\/1a.j",".\/im\/2.j",".\/im\/9_1.jp"] ・result ./im/1a.j./im/2.j./im/9_1.jp

    • ベストアンサー
    • PHP
  • mysql_fetch_array結果の配列化

    【ご質問】 あるselect文を実行し、mysql_fetch_arrayで取得した結果を配列したいのですが、どのようにしたら実現できるでしょうか? 【例】 select文の結果で3レコードヒットした場合、 カラム1 カラム2 カラム3 a b c d e f g h i a⇒カラム1[1]、b⇒カラム2[1]、c⇒カラム3[1] d⇒カラム1[2]、e⇒カラム2[2]、f⇒カラム3[2] g⇒カラム1[3]、h⇒カラム2[3]、i⇒カラム3[3]      と配列化したいのです。 ご教授宜しくお願いいたします。

  • 文字列と文字列をつなげるには

    下記のようにプログラムを作りました。 簡略しているのでわかりづらいと思いますが、 文字の配列と文字の配列を文字の配列に格納したいので、 下記のように$arrayに”.=”として文字列を加えて いますが、うまくいきません。 どのようにしたらいいのでしょうか? ご教授お願いいたします。 while($text[$i] != ""){ if($i==1){ $array[$j] = $feild[$j]; $array[$j] .= " "; $array[$j] .= substr($text[$i], $no, $pos); } }

    • ベストアンサー
    • PHP
  • 配列の要素でmysqlに問い合わせ

    フォームから送信されたデータを配列として取得し、その配列の1つの要素に対してそれぞれmysqlにselectで問い合わせてageというカラムの値を取得したいと思っています。 配列の要素の数がその都度変わるので、要素が5つある場合には5回selectでデータベースに問い合わせてデータを5つ取得したいのですが、それは可能でしょうか? ためしに下記のようにしてみたのですが、うまく取得できませんでした。 $hairetu = $_POST; for($i=0; $i< count($hairetu) ; $i++){ $sql = "SELECT * FROM member where age = '$hairetu[i]';"; $res = mysql_query($sql, $conn) or die("エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); $age = $row["age"]; echo $age; } $ageの値をcount($hairetu)の回数分表示したいのですが、どのように処理していいのか分かりません。 また、根本的におかしな点もあると思いますがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLのデータをPHPで多次元連想配列にしたい

    MySQLのデータを多次元連想配列にする方法を教えて下さい。 下記のような多次元連想配列のデータがあります。 これと同様のMySQLに登録されたデータから多次元連想配列を作りたいと思います。 $test= array( array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90"), ); print_r($test); ---print_r($test)の結果--------------------------------- Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) ) -------------------------------------------------------- これと同様のデータをMySQLに作成します。 テーブル名:test 列名:id,kamoku,tensu MySQLからデータを取得 try { $dbh = new PDO($DSN , $DBUSER , $DBPASS); $query = select * from test $stmt = $dbh->prepare($query); $stmt->execute(); while($result = $stmt->fetch(PDO::FETCH_ASSOC)) { $id = ($result['id']); $kamoku = ($result['kamoku']); $tensu = ($result['tensu']); } } catch(PDOException $e) { print "Error!: " . $e->getMessage() . "<br>"; die(); } このソースの中で何らかの処理をして print_r($test); を実行したときに ---print_r($test)の結果--------------------------------- Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) ) -------------------------------------------------------- というような、文頭で記載したものと同じ結果を得たいと思います。 while内で print_r($result);を行うと1行ずつ下記のような連想配列 Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) が取得できているのでこれを連結させて $test_sample=<<<EOF array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90") EOF; という配列の中身は作ることができました。 (1)ケース1 $test=array($test_sample); print_r($test); としてもダメで、 Array ( [0] => array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90") ) というようにうまく多次元連想配列になっていません。 (2)ケース2 $test='array('.$test_sample.')'; print_r(test); としてみたところ、 array( array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90")) というように配列ではなく単なる文字列として表示されてしまいます。 配列の中身を変数で扱う時には特別な記述法などがあるのでしょうか?

    • ベストアンサー
    • PHP
  • PHP preg_match_all関数の配列をMysqlに格納したい

    PHP preg_match_all関数の配列をMysqlに格納したい PHP初心者です。 preg_march_all関数を使って正規表現でマッチングする練習を行っています。 preg_march_allを使った場合、マッチングした結果が多次元配列となって出力されると思うのですが、それらをそれぞれのレコードに分けてMysqlに格納したいと思っています。 php入門サイトのものを弄って作ったのですが、 while (! feof($fp)) { $s = fgets($fp); $n = preg_match_all($Pattern, $s, $ar, PREG_SET_ORDER); for ($i = 0; $i < $n; $i++) mysql_query("insert into seikihyougen1 (benri) value ('$ar[$i][2]')"); } 結果はマッチングした数のレコード分、benriカラムにArray[2]という文字列が入力されてしまいます。 これらをマッチングした文字列に直してMysqlに入れるにはどうすればよいのでしょうか?

    • ベストアンサー
    • PHP
  • 配列に配列を足すことはできるか?

    PHPを使ってMYSQLのデータを吐き出すプログラムを作っています。 $re=mysql_query(SQL命令1); でDBに命令し $kekka=mysql_fetch_array($re) で、配列に代入 $re=mysql_query(SQL命令2); でDBの別テーブル(データ型やカラム数は同じ)に命令し $kekkaに情報を足すということがしたいのですが、どのように書けば$kekkaにデータが蓄積されていくのでしょうか?

    • ベストアンサー
    • PHP
  • 配列に値が入らない

    PHP初心者です。 <?php $sql = sprintf('SELECT * FROM image WHERE img_url="%s"', mysql_real_escape_string('img_url') ); $record = mysql_query($sql)or die(mysql_error()); while($data = mysql_fetch_assoc($record)) { $image = array($data['img_url']); } ?> これで $image にはデータベースの img_url のフィールドの値がすべて代入されるはずだったのですが なぜか配列には何も値が入りません。 何が悪いのか、配列についていろいろ調べてはみたのですが、どうしてもわかりませんでした。 どうやったら値が入るようになるか、教えていただけないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • 配列で文字列の切り取り[JavaScript]

    配列で文字列の切り取りという言葉が正しいがどうかはわかりませんが、 以下のような配列があるとします。 var array1 = ["xx10","xx11","xx12","xx13"]; これを、下記のように"xx"だけを切り取って、新たな配列として生成できるでしょうか? var array2 = ["10","11","12","13"]; 宜しくお願いします。

  • DBIを使用してデータを連想配列に「入れたい。

    MySQLとDBIを使って、テーブルから取り出したデータの、カラムの名前をキー、フィールド値をバリューとした連想配列を作りたいのですが、どうすればいいでしょうか?? fetchrow_arrayの使い方は分かっているのですが、fetchrow_arrayだと配列しか作れないみたいなので・・ハッシュにしたいのです。 分かる方いらっしゃいましたらご教授よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう