2011-08-12 21 views
1

SQLクエリーで作成した配列に2番目のクエリーからのデータを正しく追加する方法を誰かが示してくれることを望んでいました。PHP追加のMysqlクエリを使用した配列の追加

私は正しいmysqlリソースから作成した配列を持っています。

while($row = mysql_fetch_array($result)){ 
    $first_pass[] = $row; 
} 

しかし、私は、私は追加の$ first_pass配列する前にwhileループ内で、2番目のクエリを実行したいの$ first_pass配列で終了する前に、

$p = $row['productid']; 
$gle = mysql_query("SELECT value FROM `extra_field_values` WHERE productid = $p' AND fieldid ='11' "); 
$goog = mysql_fetch_row($gle); 
$row['google_cat'] = $goog[0]; 

私の質問には関係なく、私は既存のアレイにこのクエリを追加する方法、ではない、私はそれをダンプするとき、それはちょうど、別のインデックスが配列に追加ようにしていません。私は自分の作成したインデックスでmysql_fetch_rowを試してみましたが、mysql_fetch_arrayを試してみましたが、それは配列の別の配列として表示されます。 それはうまく機能すると思いますが、正しく見えません。 これは、ダンプは次のようになります。

ARRAY0 =>配列 0 =>文字列 '3614'(長さ= 4) 'バリエーションID' =>文字列 '3614'(長さ= 4) 1 =>文字列 '1406'(長さ= 4) 'productid' =>文字列 '1406'(長さ= 4) 2 =>文字列 '180-GL-QT-CAY-M'(長さ= 15) 'productcode' =>文字列 '180-GL-QT-CAY-M'(長さ= 15) google_cat => '衣類>手袋'

ここで、google_catは他の配列と同じように見えません。だから、どんな入力も感謝しています。 ありがとう

答えて

2

最初の$rowには、mysql_fetch_array()を使用して、デフォルトでMYSQL_BOTHフェッチメソッドを使用して値が設定されています。

これは、数値インデックスと列名キーの両方を使用して配列を作成します。

'google_cat'キーを追加すると、関連インデックスのみが作成されます。

あなたが実際に数値インデックスを使用するつもりがない限り、私は私は本当にすべて一緒にMySQL拡張を捨てるとPDOに動いているお勧めします実際に何mysql_fetch_array()

、のではなく、mysql_fetch_assoc()にこだわるお勧めします。

+0

Re:PDO - http://web135.srv3.sysproserver.de/blog/index.php?/archives/10-Effective-PHP-Cargo-Cult-Programming.html:D(ちょうど「あなたのなぜ実際に最も教育的なレスポンスではないのかを説明せずに、現在のアプローチを捨てること)... – aendrew

+0

しかし、 'mysql_fetch_assoc();'のために+1するのが理にかなっています。 – aendrew

+1

@aendrew私はなぜ、それは疲れている説明をあきらめました。私は、マニュアルのPDOセクションでうまく読んで、利点をはっきりと説明しなければならないと考えました – Phil

0

あなたのMySQLの構文に誤りがあると思います。試してみてください:

$gle = mysql_query("SELECT value FROM `extra_field_values` WHERE productid = '". $p ."' AND fieldid = '11';"); 

をまたに$row['google_cat'] = $goog[0];を交換してみてください:

$row['google_cat'] = $goog[0][0]; 

...だから、あなたの多次元行戻り配列の最初の配列の内部配列を与えます。

+0

おかげで、。私のリソースと私の行は、私が期待していたものです。彼らは大丈夫です。私の問題は、別のクエリのデータを追加して、最終的な配列を元のダンプのように見せることができますが、それはまだ機能しています。 – Miek

0

まずmysql(mysql_fetch_arrayまたはmysql_fetch_rowのいずれか)から配列を取得するのと同じ方法を使用します。

あなたが一緒に配列を連結する

array_merge($row, $goog); 

を使用することができます。 2つの要素が同じ連想キーを持つ場合、リストの最後のキーがそのキーの値になるという警告に注意してください。

http://php.net/array_merge

+0

ありがとうございます。 – Miek

0

構文man!

$gle = mysql_query("SELECT value FROM `extra_field_values` WHERE productid = $p' AND fieldid ='11' "); 

にアポストロフィが欠落しているのは...

は次のようになります。ここにコードをtranseringときだけでタイプミスだった

$gle = mysql_query("SELECT value FROM `extra_field_values` WHERE productid = '$p' AND fieldid ='11' "); 
+0

ありがとう、ちょうど入力ミススタックオーバーフロー。コードベースに欠けていない – Miek

関連する問題