PHP-在while循环中分配值,并在循环外单独访问它们

PHP-在while循环中分配值,并在循环外单独访问它们,php,mysql,arrays,loops,Php,Mysql,Arrays,Loops,平台: //TABLE STRUCTURE fname lname city Ed Al SA Bob B MN Chris V KJ $result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3"); while( $row = mysql_fetch_array($result) ) { $new_rows_data[

平台:

//TABLE STRUCTURE
fname   lname    city
Ed       Al      SA
Bob     B       MN
Chris     V       KJ
$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
PHP,mySQL

我所拥有的:

//TABLE STRUCTURE
fname   lname    city
Ed       Al      SA
Bob     B       MN
Chris     V       KJ
$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
我有一个数据库表。在我的应用程序中,我能够获取所有行。当我查询数据库时,我已经动态地设置了记录获取限制

我想做什么:

//TABLE STRUCTURE
fname   lname    city
Ed       Al      SA
Bob     B       MN
Chris     V       KJ
$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
我正在尝试以循环的方式提取所有数据行,直到达到记录获取限制。我想将这些结果分配给另一个数组(在循环中),这样我就可以通过这个新数组在循环之外访问这些值。我需要PHP代码来执行此操作。我希望能够在Javascript中应用相同的编码逻辑。有可能吗

示例:

//TABLE STRUCTURE
fname   lname    city
Ed       Al      SA
Bob     B       MN
Chris     V       KJ
$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
PHP查询:

//TABLE STRUCTURE
fname   lname    city
Ed       Al      SA
Bob     B       MN
Chris     V       KJ
$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
所需输出:

//TABLE STRUCTURE
fname   lname    city
Ed       Al      SA
Bob     B       MN
Chris     V       KJ
$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

提前感谢您。

如果您将PHP查询位更改为

$new_rows_data['fname'][] = $row['fname'];
$new_rows_data['lname'][] = $row['lname'];
$new_rows_data['city'][]  = $row['city'];
…你应该可以走了。(目前,每次都将内容追加到单个字符串中。)

顺便说一句,我假设这个数据是“已知良好的”,因为您看起来根本不是逃避它的输出。(跨站点脚本编写不好,等等)

尽管答案是正确的,但在进入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']
}

+他说的是实话。虽然PHP允许您进行“惰性初始化”,但在使用之前定义内容是一种很好的做法。谢谢您的回答。关于如何使用$.each函数在jQuery中实现相同的功能,您有什么想法吗?@middaparka谢谢您的安全提醒。当我直接从数据库获取数据时,我是否仍然需要转义它。如果是的话,你能告诉我怎么做吗?多谢!一般来说,将数据放入数据库时使用mysql_real_escape_字符串,输出时使用htmlentities。也就是说,这是一个深刻的话题——参见