0
右陣列鍵(S)我有兩個表:獲取與PHP/MySQL的搜索聯合表
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'];
}
,但它似乎並沒有工作。
我在做什麼錯?有一個更好的方法嗎?任何幫助非常感謝!
感謝您的建議@jolmos。我應該澄清一下,根據搜索中使用的id,沒有,結果中可能會丟失一行或多行,這意味着其他項目,而不僅僅是最後一項,可能會受到影響。你會如何爲這種情況編寫解決方案? – Cucurigu
我不明白你的意思... 隨着我寫的代碼,你將最終有一個像$ item_n0 = value,$ item_n1 = value(無論原始數組或查詢結果大小)的變量集。 ..然後$ lastItem = value,對應於原始數組/查詢結果中的最後一個值。 – jolmos
再次感謝您的評論。 – Cucurigu