2010-01-09 66 views
2

平臺:PHP - 在while循環分配值,並單獨訪問他們在循環外

PHP,MySQL的

我有:

我有一個數據庫表。在我的應用程序中,我能夠獲取所有行。當我查詢數據庫時,我已經動態設置了記錄獲取限制。

我所試圖做的事:

我試圖拔出數據的所有行,直到獲取紀錄達到極限,在一個循環。我想將這些結果分配給另一個數組(在循環中),以便我可以通過循環外的這個新數組訪問這些值。我需要PHP代碼這樣做。我希望能夠在Javascript中使用相同的編碼邏輯。這可能嗎?

例:

//TABLE STRUCTURE 
fname lname city 
Ed  Al  SA 
Bob  B  MN 
Chris  V  KJ 

PHP QUERY:

$result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3"); 

while($row = mysql_fetch_array($result)) {  

     $new_rows_data['fname'] .= $row['fname']; 
     $new_rows_data['lname'] .= $row['lname']; 
     $new_rows_data['city'] .= $row['city']; 
    } 

所需的輸出:

echo $new_rows_data['fname'][0].' '.$new_rows_data['lname'][0].' '.$new_rows_data['city'][0]. 
//Want the above to show: Ed  Al  SA 
echo $new_rows_data['fname'][1].' '.$new_rows_data['lname'][1].' '.$new_rows_data['city'][1]. 
//Want the above to show: Bob  B  MN 
echo $new_rows_data['fname'][2].' '.$new_rows_data['lname'][2].' '.$new_rows_data['city'][2]. 
//Want the above to show: Chris  V  KJ 

謝謝你在進階ANCE。

回答

3

如果你改變了PHP查詢位...

$new_rows_data['fname'][] = $row['fname']; 
$new_rows_data['lname'][] = $row['lname']; 
$new_rows_data['city'][] = $row['city']; 

...你要善於去。 (目前,您每次都將內容添加到單個字符串中。)

順便提一下,我認爲這個數據是「已知的」,因爲您看起來並沒有輸出它。 (跨站腳本是壞的,等等)

+0

謝謝你的答案。關於如何使用$ .each函數在jQuery中實現相同的想法? – Devner 2010-01-09 13:14:32

+0

@middaparka感謝您的安全警報。由於我直接從數據庫中獲取數據,我仍然需要轉義它。如果是這樣,你能告訴我如何?非常感謝! – Devner 2010-01-09 15:05:27

+0

作爲一般規則,在將數據放入數據庫時​​使用mysql_real_escape_string,並在輸出時使用htmlentities。這就是說,這是一個深刻的話題 - 請參閱http://stackoverflow.com/questions/71328/what-are-the-best-practices-for-avoid-xss-attacks-in-a-php-site – 2010-01-09 15:47:17

3

雖然middaparka's答案是正確的,一定要在進入while循環之前,首先聲明各個新的陣列:

$result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3"); 

$new_rows_data['fname'] = array(); 
$new_rows_data['lname'] = array(); 
$new_rows_data['city'] = array(); 
while($row = mysql_fetch_array($result)) { 
    // the following (two brackets []), automatically pushes a value on the end of the array 
    $new_rows_data['fname'][] = $row['fname']; 
    $new_rows_data['lname'][] = $row['lname']; 
    $new_rows_data['city'][] = $row['city'] 
} 
+0

+1他說的是事實。雖然PHP會讓你做'懶惰的初始化',但在使用之前定義事情是很好的做法。 – 2010-01-09 12:11:54

+0

提及最佳實踐。 – Devner 2010-01-09 13:15:10