DBから取得したデータを文字列に変換
・前提
1.phpとmysqlを使い、記事掲載ページを作っています。
2.異なるデータベースを使用しています。
・やりたいこと
異なるDBのデータと、使用しているDBのデータ紐づけ、条件をつけて表示したいです。
実現したいことの例)
DB:AとDB:Bがあったとします。
DB:Aには記事の情報が入っています。
具体的には、記事ID,記事Title, 記事Body.....のような感じです。
DB:Bには、Bookmarkした記事IDが入っています。
具体的には、2,4,8,22...のように入っています。
そこで、DB:Bから取得したデータ(Bookmarkした記事ID)を一度文字列にし、
DB:Aのデータと一致すれば、Bokmarkした記事を取得できる。
といった感じにしたいです。
しかし、DB:BからBookmarkした記事IDは取得できるのですが
どうやら文字列に変換できないようです。
こちらがそのエラーメッセージです。
発生している問題・エラーメッセージ
Notice: Array to string conversion in ......on line 80 Array ( )
該当のソースコード1
SQL文の関数です。
php
1 function from_B(){ //BはDB名です。 2$sql = <<<SQL 3select bookmarked_id 4from bookmarke_table 5SQL; 6 7return query($sql); // 本来のqueryはもっとちゃんとしたものを使っています。 8} 9 10function from_A($data){ //AはDB名です。 11$sql = <<<SQL 12select * 13from A.all_article where article_id in ("+$data+") --AはDB名です。 14SQL; 15 16return query($sql); 17} 18
該当のソースコード2
PHP側でデータを取得する関数です。
php
1 function from getbookedarticle(){ 2$get_first = $this->from_B() //bookmarkした記事のIDを取得 3$implode = implode(",",$get_first) //配列を文字列にする 4$get_second = $this->from_A($implode);//bookmarkした記事IDと記事のIDが一致したデータを取得 5echo $get_second; 6} 7
補足情報(FW/ツールのバージョンなど)
現在、テスト用にDB:Bに入っているBookmarkした記事の数は1つだけです。
そのため、文字列へ変換し、連結するimplode関数で大丈夫なのでしょうか?
また、print_rなどでDB:Bから取得した値は、多次元配列になっております。
Array ( [0] => Array ( [article_id] => 4 ) ) のような感じです。
DB:A、DB:B各々のIDはintです。
詳しい情報を提供できなく、大変申し訳ないのですが、
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー