我希望有人可以展示如何使用来自第二个查询的数据正确附加使用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看起来与数组的其余部分完全不同。所以任何输入都表示赞赏。 感谢
答案 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);
将数组连接在一起。请注意警告:如果两个元素具有相同的关联键,则列表中的最后一个元素将是该键的值。
答案 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' ");