PHP附加一个带有额外Mysql查询的数组

时间:2011-08-12 00:08:42

标签: php mysql arrays append

我希望有人可以展示如何使用来自第二个查询的数据正确附加使用sql查询创建的数组。

我有一个我从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 =>字符串'1406'(长度= 4)     'productid'=>字符串'1406'(长度= 4)     2 =>字符串'180-GL-QT-CAY-M'(长度= 15)     'productcode'=>字符串'180-GL-QT-CAY-M'(长度= 15)     google_cat => “服装GT;手套

  

其中google_cat看起来与数组的其余部分完全不同。所以任何输入都表示赞赏。 感谢

4 个答案:

答案 0 :(得分:2)

不同之处在于,您的初始$row是使用mysql_fetch_array()填充的,默认使用MYSQL_BOTH获取方法。

这将使用数字索引和列名称键创建一个数组。

当您附加'google_cat'密钥时,您只需创建一个关联索引。

除非你真的要使用数字索引,否则我建议坚持使用mysql_fetch_assoc()代替mysql_fetch_array()

实际上,我真正推荐的是将所有mysql扩展放在一起并转移到PDO

答案 1 :(得分: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]; 

...因此它为您提供了多维行返回数组中第一个数组的内部数组。 (数组数组arraaayyyyyy ......)

答案 2 :(得分:0)

首先使用相同的方法从mysql(mysql_fetch_array或mysql_fetch_row)获取数组,而不是两者。

然后你可以使用

array_merge($row, $goog);

将数组连接在一起。请注意警告:如果两个元素具有相同的关联键,则列表中的最后一个元素将是该键的值。

http://php.net/array_merge

答案 3 :(得分: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' ");