• ベストアンサー

配列に配列を足すことはできるか?

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

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

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

  • ベストアンサー
  • ok-rjak
  • ベストアンサー率52% (70/134)
回答No.1

単純に出力された配列を統合する場合は、PHPに関数があります。 array_merge - http://php.net/manual/ja/function.array-merge.php または空の配列を用意しておいて、結果をそれに入れ込んでいくことも出来ますね。 $array = array(); $rs=mysql_query(SQL命令1); while($row = mysql_fetch_assoc($rs)){ $array[] = $row; } $rs=mysql_query(SQL命令2); while($row = mysql_fetch_assoc($rs)){ $array[] = $row; } または、可能であれば1つのSQL文で全てのデータを吐いてしまうのが手っ取り早いです。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

あなたの言う「情報を足す」とはどのような操作を言っているのでしょうか? SQL1で 1,12,13 2,14,15 SQL2で 1,22,23 2,24,25 とあったとき 1,12,13 2,14,15 1,22,23 2,24,25 と配列の後ろに、追加するのか 1+1,12+22,13+23 2+2,14+24,15+25 のように配列の要素同士を足すのか 1,12,13,1,22,23 2,14,15,2,24,25 のように、横に継げるのか 可能ならば、1つのSQLで済ませる、という意見に賛成です。

関連するQ&A

  • 配列に値が入らない

    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
  • SQLのデータから連想配列を作成したい

    あるPHPがあります。 このPHPは配列$food = array('orange','apple','sugar','spice','cake');を基にさまざまな処理を行っているのですが、 配列内部の要素の数が大きくなってきたので、sqlを使用して$foodを作成しようと思います。 データベース名dbname、テーブル名Tableとして、nameカラムのデータから$foodを作成…つまり、 ---------------------- Table  ------+ name | ------+ orange apple sugar spice cake ---------------------- ↓ ↓ $food = array('orange','apple','sugar','spice','cake'); などとしたいのです。 mysql_fetch_arrayなどを使用すればできると思うのですが、自分ではどうにもうまくいきません。 ↓はgoogleでの検索条件を基に、私が書いたコードです <?php $link = mysql_connect( $hostname, $uname, $upass); mysql_select_db( $dbname, $link) $res = mysql_query( "SELECT * from {$name}", $link); while( $food = mysql_fetch_assoc( $res ) ){ } ?> どこのコードがおかしいのか教えてください。 また、できれば上のデータベースから$foodを作成するPHPを教えてください。 どなたかご教示のほど、どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPの配列で質問です。

    こんにちは。 PHPの配列で質問です。 ページナビを使ってmysqlから列3×行(多数)を 表示するとします。 MYSQLのテーブル table ------------------ |sub1 |sub2 |sub3 | ------------------ |1 |東京 |htt1 | ------------------ |2 |埼玉 |htt2 | ------------------ |3 |茨城 |htt3 | 以下の方法でページナビのページ目に開始行を合わせて 表示したいのですが、表示方法がわかりません。 [$i]を入れて$sub1dt=以下を書き直せばいいと思うのですが、 どう書けばいいのかわかりません。 for( $i= ($page-1)*5 ; $i<$allnum ; $i++ ){ $kekka = mysql_fetch_array($result); $sub1dt = $kekka["sub1"]; $sub2dt = $kekka["sub2"]; $sub3dt = $kekka["sub3"]; echo ($sub1dt." : ".$sub2dt." : ".$sub3dt."<br>\n"); } $page は ページナビのページ目(例 [1][2]) allnum は テーブルの行数 (例100行とか) $result は  $sql = "select * from table"; $result = mysql_query($sql, $mysql_con); です。 $mysql_conは、 $mysql_con = mysql_connect ("localhost","****","****"); です。 お分かりの方、よろしくお願いします。 以上

    • ベストアンサー
    • PHP
  • MYSQLのエラーが解消できない。

    ただいま『基礎からのmysql」という本で、MYSQLの勉強をしています。 本の中の、18-03という問題で <?php $s=mysql_connect("localhost","root","PASS") or die("失敗です"); print "成功しました。<br />"; mysql_select_db("db1".$s); mysql_query("INSERT INTO tb1 VALUES('k888','エスキュ',25)"); $re=mysql_query("SELECT * FROM tb1"); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; print ":"; print $kekka[1]; print ":"; print $kekka[2]; print "<br />"; } mysql_close($s); ?> このような文章があるのですが、うまく動きません。 ----------------------------------------------- 成功しました。 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\sounyu_hyouzi.php on line 9 ----------------------------------------------- ↑のエラーを返すのですが、 スペルミスなどはなく、さっぱり原因がわかりません。 line9ということなので、 while($kekka=mysql_fetch_array($re)){ に問題がありそうな気もするのですが、見当もつきません。 ちなみに、 コマンドプロンとで、SELECT * FROM tb1をやると +------+-----------+------+ | bang | nama | tosi | +------+-----------+------+ | A101 | SATOU | 40 | | A101 | SATO | 40 | | A101 | NAKAGAWA | 40 | +------+-----------+------+ と表示され、 show databases;でも +--------------------+ | Database | +--------------------+ | information_schema | | cdcol | | db1 | | db21 | | db511 | | mysql | | performance_schema | | phpmyadmin | | test | | webauth | +--------------------+ このように表示されますので、データベースやテーブルの問題ではないのかと思います。 なにかピンとくる方おられましたらよろしくおねがいします。

    • ベストアンサー
    • MySQL
  • チェックボックスでチェックした配列の値をDBに。

    チェックボックスでチェックした配列の値を データベースのカラム名と照らし合わせて 一致する所に「1」を入れたいのですが、うまくいきません。 PHP Version 5.1.6 MySQL - 5.0.45 で運用しています。 どうしたら、入れることができるでしょうか? ご教授、よろしくお願いいたします。 1 送るページ $sql = "select * from `class_tbl`"; $rest = mysql_query($sql, $con); while($col = mysql_fetch_array($rest)) { $classID = $col["classID"]; $class_name = $col["class_name"]; $sql = "select * from `member_sub_tbl` where `ID` ='$ID'"; $rst = mysql_query($sql, $con); while($col = mysql_fetch_array($rst)) { $kekka = $col["$classID"]; if($kekka==1) { echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" checked/> $class_name EOF; } else{ echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" /> $class_name EOF; } } } echo <<<EOF <input name="ID" type="hidden" value="$ID" /> EOF; 2 受けるページ $ID=$POST["ID"]; $classID=$POST["classID"]; var_dump($_REQUEST); 以下のように表示しています。 array(3) { ["classID"]=> array(10) { [0]=> string(4) "1010" [1]=> string(4) "1050" [2]=> string(4) "1110" [3]=> string(4) "1182" } ["sn"]=> string(2) "45" ["PHPSESSID"]=> string(32) "********************" } 「ID」の行に、配列の「1010」「1050」と 「member_sub_tbl(テーブル)」の「カラム名」を比較して、一致する所に「1」を入れたいのですがうまくいきません。 ※update をしたいのです。 試行錯誤していますが、方法が分かりません。 ご教授、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQLのレコードを逆向きに並べる方法は?

    MySQLのレコードを逆向きに並べる方法は? MySQLを使って、掲示板を作ろうとしているのですが、 “db1”というデータベースに、“tbk”というテーブルを作り、 “bangou”というフィールドで、AUTO_INCREMENTで番号をふり、 下記のように、番号順にレコードをプリントしているのですが、 <?php $s=mysql_connect("localhost","root","パスワード"); mysql_select_db("db1"); $re=mysql_query("select * from tbk order by bangou"); while($kekka=mysql_fetch_array($re)){ print "<hr />"; print $kekka[0]; print "<br />"; print $kekka[1]; print "<br />"; print $kekka[2]; print "<br />"; print $kekka[3]; print "<br />"; } mysql_close($s); ?> このように、番号の若い順にレコードをプリントするのではなく、 番号(“bangou”)の古い順にレコードをプリントするようにするには、 どうすれば良いでしょうか?

  • MYSQLとPHPによって取得する多次元配列

    はじめてご質問させていただきます。 現在以下のようなテーブルが3つあります。 [ tbl1 ] | tbl1Key | title | | 1 | a | | 2 | b | | 3 | c | | 4 | d | [tbl2] | tbl2Key | tbl1Key | tbl3Key | | 1 | 2 | 2 | | 2 | 3 | 1 | | 3 | 3 | 4 | | 4 | 1 | 3 | [tbl3] | tbl3Key | value | | 1 | aaa | | 2 | bbb | | 3 | ccc | | 4 | ddd | 上記のデータソースを元に以下のような結果を得たいと考えています。 array( array( 'tbl1Key'=>1, 'title'=>'a', 'values' => array( array( 'tbl3Key'=>3, value='ccc' ) ), array( 'tbl1Key'=>2, 'title'=>'b', 'values' => array( array( 'tbl3Key'=>2, value='bbb' ) ), array( 'tbl1Key'=>3, 'title'=>'c', 'values' => array( array( 'tbl3Key'=>1, value='aaa'), array( 'tbl3Key'=>4, value='ddd' ) ), array( 'tbl1Key'=>4, 'title'=>'d', 'values' = > array( array( 'tbl3Key'=> , value='' ) ) ) この場合phpによって $sql = ("select * from `tbl1`"); $res = mysql_query( $sql, $con ); $data = array(); while( $row =mysql_fetch_object( $res ) ) { $sql = ("select * from `tbl3` inner join `tbl2` on `tbl3`.`tbl3Key`=`tbl2`.`tbl3Key` where `tbl2`.`tbl1Key`={$row->tbl1Key}"); $res2 = mysql_query( $sql, $con ); $tmp = array(); while( $r = mysql_fetch_object( $res2 ) ) { $tmp[] = $r->value; } $row->values = $tmp; $data = $row; } まずtbl1のデータをすべて取り、配列dataに格納する段階で、tbl1と関連付けされたtbl3のvalueを取得し配列tblに格納、それを新しい要素として配列dataにプッシュしている状況です。 こういったテーブルでいうところの1カラムのみ配列で返すような事は、こういったループを使って以外にも可能なのでしょうか。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • SQL文の実行結果を変数で受けて、それを連想配列に格納したいです。

    SQL文の実行結果を変数で受けて、それを連想配列に格納したいです。 (カラム名を連想配列のキーにします。) また、値をHTMLエスケープ処理したいと考えています。 下記のソースを書いてみましたが、配列$all[]にうまく入りません。 $qresult = mysql_query($qstring); $all = array(); while (list ($key, $val) = mysql_fetch_assoc($qresult)){  $all[$key] = htmlentities($val, ENT_QUOTES,EUCJP); } また、3行目をeach(mysql_fetch_assoc($qresult))に変更してもみましたが、 「Variable passed to each() is not an array or object」エラーが出ます。 mysql_fetch_assocの戻り値は連想配列では無いのでしょうか。 $qresult = mysql_query($qstring); $all = array(); while ($rec = mysql_fetch_assoc($result)){  $all[] = $rec; } 上記だと問題なく取得出来るのですが。。。 何が悪いのでしょうか。

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

    以下のように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
  • 配列へのデータセット方法

    AテーブルのnameフィールドをMySQLのSELECT文で読込み、結果のnameフィールドを配列$arynameにセットしたいとおもいます。 配列の結果は、 array([0]=>aaa [1]=>abc [2]=>def [3]=>ggg) となる様にしたいのですが、結果が上手くいきませんでした。 教えてください。 $sql1="SELECT name FROM `A`"; $db->query($sql1); $cnt=1; while($db->next_record()){ $name=$db->f("name"); $aryname=array($name); $cnt++; }

    • 締切済み
    • PHP

専門家に質問してみよう