I am writing a script to export a MySQL query as a CSV file. So far so good, except that I get an Invalid Argument for the second foreach()
statement! I tried to use mysql_data_seek
but that did not solve the problem. AFAK $row
is an array so it should work.
<?php
$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error());
mysql_select_db("database", $conn);
if(isset($_POST['submit']))
{
$filename = 'uploads/'.strtotime("now").'.csv';
$fp = fopen($filename,"w");
$sql = mysql_query("SELECT * FROM master") or die(mysql_error());
$row = mysql_fetch_assoc($sql);
$seperator = "";
$comma = "";
foreach($row as $name => $value)
{
$seperator .= $comma . '' .str_replace('','""',$name);
$comma = ",";
}
$seperator .= "
";
fputs($fp,$seperator);
mysql_data_seek($sql, 0);
while( $row = mysql_fetch_assoc($sql) );
{
$seperator = "";
$comma = "";
foreach($row as $name => $value)
{
$seperator .= $comma . '' .str_replace('','""',$value);
$comma = ",";
}
$seperator .= "
";
fputs($fp,$seperator);
}
fclose($fp);
}
?>
I am not able to get why you have added first foreach loop, you code should be as below
<?php
$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error());
mysql_select_db("database", $conn);
if(isset($_POST['submit']))
{
$filename = 'uploads/'.strtotime("now").'.csv';
$fp = fopen($filename,"w");
$sql = mysql_query("SELECT * FROM master") or die(mysql_error());
while( $row = mysql_fetch_assoc($sql) );
{
$seperator = "";
$comma = "";
foreach($row as $name => $value)
{
$seperator .= $comma . '' .str_replace('','""',$value);
$comma = ",";
}
$seperator .= "
";
fputs($fp,$seperator);
}
fclose($fp);
}
?>