2011-08-12 71 views
1

我希望有人能夠展示如何正確地追加一個用sql查詢創建的數組和第二個查詢的數據。PHP添加一個額外的Mysql查詢

我有一個數組,我從一個正確的MySQL資源創建。

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

但我完成與$ first_pass陣列之前,我想做第二個查詢,所以$ first_pass陣列我加之前while循環中;

$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) 'variantid'=>字符串 '3614'(長度= 4) 1 => string'1406'(length = 4) 'productid'=> string'1406'(length = 4) 2 => string'180-GL-QT-CAY-M'(length = 15) 'productcode'=>字符串'180-GL-QT-CAY-M'(長度= 15) google_cat =>'服裝>手套'

其中google_cat與數組的其餘部分完全無關。所以任何輸入都會被讚賞。 謝謝

回答

2

不同之處在於,您的初始$row使用mysql_fetch_array()填充,默認使用MYSQL_BOTH提取方法。

這將使用數字索引和列名稱鍵創建一個數組。

當您追加'google_cat'鍵時,您只能創建關聯索引。

除非你真的要使用的數字指標,我建議你堅持mysql_fetch_assoc()而不是mysql_fetch_array()

其實,我真的建議是一起開溝mysql擴展和移動PDO

+0

回覆: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]; 

...所以,它給你的多維行返回數組中的第一陣列的內部數組。 (Array array arraaayyyyyy ...)

+0

謝謝,這只是一個錯字這裏transering代碼時。我的資源和我的排是我所期望的。他們很好。我的問題是我似乎可以追加更多的數據從另一個查詢,並得到最終陣列看起來像原始轉儲,但它仍然功能。 – Miek

0

首先使用相同的方法從mysql(無論是mysql_fetch_array還是mysql_fetch_row)中獲取數組。

那麼你可以使用

array_merge($row, $goog); 

到陣列串連在一起。注意警告:如果兩個元素具有相同的關聯關鍵字,則列表中的最後一個關鍵字將成爲該關鍵字的值。

http://php.net/array_merge

+0

謝謝我會試試 – Miek

0

錯誤在你的語法的人!

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

缺少撇號...

應該是:

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

謝謝,那只是一個拼寫錯誤堆棧溢出,它在代碼庫中不會丟失 – Miek