Php 为什么只获取1个数组而不是多个数组?

Php 为什么只获取1个数组而不是多个数组?,php,Php,我是php编程的新手,我想让下面的代码返回许多数组(到flash as3),但是我只收到一个数组。有人能指出我的错误吗?谢谢 $data_array = ""; $i = 0; //if(isset($_POST['myrequest']) && $_POST['myrequest'] == "get_characters") //{ $sql = mysqli_query($conn, "SELECT * FROM ns_users ORDER BY Char_id"); wh

我是php编程的新手,我想让下面的代码返回许多数组(到flash as3),但是我只收到一个数组。有人能指出我的错误吗?谢谢

$data_array = "";
$i = 0;
//if(isset($_POST['myrequest']) && $_POST['myrequest'] == "get_characters")
//{
$sql = mysqli_query($conn, "SELECT * FROM ns_users ORDER BY Char_id");
while($row = mysqli_fetch_array($sql))
{
    $i++;
    $fb_name = $row["Username"];
    $fb_id = $row["Fb_id"];
    $fb_at = $row["Access_token"];
    $fb_sig = $row["Fb_sig"];
    $char_id = $row["Char_id"];
    if($i == 1)
    {
        $data_array .= "$fb_name|$fb_id|$fb_at|$fb_sig|$char_id";
    }
    else
    {
        $data_array .= "(||)$fb_name|$fb_id|$fb_at|$fb_sig|$char_id";
    }
    echo "returnStr=$data_array";
    exit();
}

最后两行应该在循环之外:

$data_array = "";
$i = 0;
//if(isset($_POST['myrequest']) && $_POST['myrequest'] == "get_characters")
//{
$sql = mysqli_query($conn, "SELECT * FROM ns_users ORDER BY Char_id");
while($row = mysqli_fetch_array($sql))
{
    $i++;
    $fb_name = $row["Username"];
    $fb_id = $row["Fb_id"];
    $fb_at = $row["Access_token"];
    $fb_sig = $row["Fb_sig"];
    $char_id = $row["Char_id"];
    if($i == 1)
    {
        $data_array .= "$fb_name|$fb_id|$fb_at|$fb_sig|$char_id";
    }
    else
    {
        $data_array .= "(||)$fb_name|$fb_id|$fb_at|$fb_sig|$char_id";
    }



    }
echo "returnStr=$data_array";
        exit();

当您编写退出洞察循环时,您停止执行程序,只得到一条记录。您应该设置回音并在while循环后退出

$data_array = "";
$i = 0;

$sql = mysqli_query($conn, "SELECT * FROM ns_users ORDER BY Char_id");
while($row = mysqli_fetch_array($sql)) {
    $i++;
    $fb_name = $row["Username"];
    $fb_id = $row["Fb_id"];
    $fb_at = $row["Access_token"];
    $fb_sig = $row["Fb_sig"];
    $char_id = $row["Char_id"];

    if($i == 1) {
        $data_array .= "$fb_name|$fb_id|$fb_at|$fb_sig|$char_id";
    } else {
        $data_array .= "(||)$fb_name|$fb_id|$fb_at|$fb_sig|$char_id";
    }    
}
echo "returnStr=$data_array";
exit();

如果您想在
选择中命名所需的列,那么就简单多了。确保在获取中使用
MYSQLI\u ASSOC

$sql = mysqli_query($conn, "SELECT Username, Fb_id, Access_token, Fb_sig, Char_id FROM ns_users ORDER BY Char_id");

while($row = mysqli_fetch_array($sql, MYSQLI_ASSOC))
{
    $data_array[] = implode('|', $row);
}
echo "returnStr=" . implode('(||)', $data_array);
exit();

echo
after
while
-loop我在这里看不到任何数组或返回值
$data\u array
只是一个字符串,你只是在它的后面追加。所以你把
exit
放在那里,现在想知道它为什么会退出?解释一下为什么会退出是有意义的,否则OP会继续考虑像魔术一样编程。是的,我完全理解new@AbraCadaver您是否应该更改$data_数组[]内爆(“|”,$row);到$data_数组[]=内爆(“|”,$row)?