2016-10-21 100 views
1

我试着将其打印在Excel中,但我不明白为什么foreach循环给我一个警告:非法串偏移while循环它只是平稳运行而循环VS的foreach循环

这是while循环

EDITED

include 'db.php'; 
$sql = "SELECT * FROM customer"; 
$result = mysql_query($sql); 
$excel = array(); 

while($row = mysql_fetch_array($result)){ 
    $wew = $row["fname"]."\t".$row["lname"]."\t".$row["email"]; 
    array_push($excel,$wew); 
} 

echo implode("\n",array_values($excel)); 

这是我foreach循环

include 'db.php'; 
$sql = "SELECT * FROM customer"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
$excel = array(); 

foreach($row as $r){ 
    $wew = $r["fname"]."\t".$r["lname"]."\t".$r["email"]; 
    array_push($excel,$wew); 
} 

echo implode("\n",array_values($excel)); 

我试着去了解它,但怎么也找不到解决这个问题之一。

+0

因为while循环使用'mysql_fetch_array' –

+0

@JeffPuckettII我foreach循环使用不mysql_fetch_array –

+1

你只会得到一行使用foreach输出结果,并比较 – nogad

回答

2

$rstring型,而不是array这样的:

foreach($row as $r){ 
    $wew = $row["fname"]."\t".$row["lname"]."\t".$row["email"]; 
    array_push($excel,$wew); 
} 

OR

$wew = ""; 
foreach($row as $r){ 
    $wew .= $row["fname"]."\t".$row["lname"]."\t".$row["email"]; 
} 
array_push($excel,$wew); 
+0

这将只给出一个结果,而不是while循环取回所有结果。您将获得重复的行,结果集中的每一列都有一个这样的行。 –

+0

@JeffPuckettII我编辑问题先生 –

+0

谢谢先生所以这就是为什么如果即时通讯使用$ r给我非法字符串因为我已经使用字符串 –