2010-01-09 32 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