2016-02-29 104 views
1

我想从MySQL写入数据到PHP数组(用PHP库FluidXML生成一个XML文件)。当我回显数组时,我只能得到它的第一个值,但是当我使用与数组相同的数据回显一个变量时,我会得到具有所有信息的正确输出。让我来解释更确切地说:PHP数组输出只是第一个值

查询得到的数据:

$sql = sprintf("select b.nPosID, b.nAmount, b.sName, ......."); 
$result = mysql_query($sql); 

然后我循环槽结果:

$msg = ""; 
$orderArticles = []; 
$orderSubArticles = []; 

while($data = mysql_fetch_array($result)) 
{ 
    if($data['sChange'] != null) { 
     $msg .= ' * ' . $data['sChange'] . ' ' . number_format($data['nAmount'] * $data['nPriceChange'], 2) . "\r\n"; 
     $orderSubArticles[] = ['SubArticle' => [ 
      'ArticleNo' => '0', 
      'ArticleName' => $data['sChange'], 
      'Count' => $data['nAmount'], 
      'Price' => $data['nPriceChange'] 
      ],]; 
    } 

    if ($nPosID != $data['nPosID']) { 
     $msg .= " \r\n" . $data['nAmount'] . ' x ' . $data['sName'] . ' ' . number_format($data['nAmount'] * $data['nPrice'], 2) . "\r\n"; 
     $orderArticles[] = ['Article' => [ 
      'ArticleNo' => '0', 
      'ArticleName' => $data['sName'], 
      'ArticleSize' => '0', 
      'Count' => $data['nAmount'], 
      'Price' => $data['nPrice'], 
      'Tax' => '10', 
        'SubArticleList' => [ 
          $orderSubArticles 
      ]],]; 
    } 
} 

假设,从SQL查询得到以下正确的输出:

Pizza 
    + extra cheese 
    + extra tonno 

当我回显$ msg变量时,我得到相同的正确结果。但是,当我回声阵列,我只得到的第一个值:

Pizza 
    + extra cheese 

被精确地,将其与从所述数组中的值所产生的输出:

<ArticleList> 
    <Article> 
    <ArticleName>Pizza</ArticleName> 
    <Count>1</Count> 
    <Price>12.9</Price> 
    <SubArticleList> 
     <SubArticle> 
      <ArticleName>Extra cheese</ArticleName> 
      <Count>1</Count> 
      <Price>3</Price> 
     </SubArticle> 
    </SubArticleList> 
    </Article> 
</ArticleList> 

所以第二<SubArticle>丢失(额外的tonno)。

+0

你可以添加'var_dump($ result)'的输出吗? – AMartinNo1

+0

我得到“类型(mysql结果)的资源(19)”。 –

回答

-1

不知道你的结果集是怎么样的,我怀疑你的假设是正确的,集合中的结果/行确实包含两个子粒。这最后意味着所有的结果都有两个子分类,并且情况并非如此,因为那样它将需要返回类似sChange1,sChange2 ...

即使结果看起来像这样,并包含两个或更多的子文章中,您的代码仅将其中一个分配给每个结果的子文章数组。

+0

我知道你的意思。那么你认为解决这个问题的正确方法是什么? –

+0

@Emre Beloz它取决于结果集的外观如何。请显示var_dump($ results)的输出。 – Awita

+0

就像我上面评论的那样,我得到“类型(mysql结果)的资源(19)”。当你需要数组的内容时,我必须用$ orderArticles和$ orderSubArticles替换$ results。 Danke dir .. –

相关问题