我有两张桌子:
第1表(t1):
item_no | item_desc
-------------
200 | d1
250 | d2
257 | d3
305 | d4
605 | d5
606 | d6
第二桌(t2)
id | item_no | item_value
-------------
1 | 200 | v1_200
1 | 250 | v1_250
1 | 257 | v1_257
1 | 305 | v1_305
1 | 605 | v1_605
1 | 606 | v1_606
2 | 200 | v2_200
2 | 250 | v2_250
2 | 257 | v2_257
2 | 305 | v2_305
2 | 606 | v2_606
我通过$ id = $ _POST [' id']获取t2中id字段的值;并对其进行安全检查等。
我使用如下查询对这两个表执行联接搜索:
$items= array();
$items_no = array('200', '250', '257', '305', '605', '606');
$items_nos = implode(",", $nutrient_no);
$sql = "SELECT item_value FROM t1 join t2 ON t1.item_no=t2.item_no WHERE t1.id='$id' AND t2.item_no in ($items_nos)";
最后,我提取结果如下:
$retval = mysql_query($sql) or die('Query failed: ' . mysql_error());
while($row = mysql_fetch_assoc($retval))
{
$item_value[] = $row['item_value'];
$first_item = $item_value['0'];
$second_item = $item_value['1'];
....
$last_item = $item_value['5'];
}
问题是,对于id#2的搜索,如上面给出的示例所示,item_no 605不存在。搜索仍然正常,但数组键不再正确,即$ last_item的值未正确返回,因为键现在是4而不是5.
重要提示:根据搜索中使用的ID,结果中可能缺少一行,一行或多行。
我尝试过这个解决方案:
$items_count = count($item_value);
for( $x = 1; $x <= $items_count ; $x++ ) {
$foo = 'item_value' . $x;
if ( isset( $$item_value[$x-1])) {
$$foo = $$item_value[$x-1];
}
else {
$$foo = '';
}
$last_item = $foo['5'];
}
但它似乎不起作用。
我做错了什么?有一个更好的方法吗?任何帮助非常感谢!
答案 0 :(得分:0)
根据查询结果,拥有可变数量的变量对我来说很奇怪......但你可以尝试这样的事情:
for ($i=0; $i < count($arr)-1; $i++) {
${"item_n" . $i} = $arr[$i];
}
最后一项:
$last_item = end(array_values($arr));