I am trying to write a function that will insert data into a MySQL table like this:
for ($i = 0; $i < $num; $i++){
if ($header[$i] == $user_table_property->name) {
$import = "
INSERT into testing (
$header[$i]
) values (
'$data[$i]'
)";
}
}
If I have something like this, it will just insert first data into first column, can I know what should I change or add? I Googled some examples and edited it myself, but it’s still not working.
Here is the longer part of the codes.
if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "<br></h1>";
echo "<h2>Displaying contents:</h2>";
readfile($_FILES['filename']['tmp_name']);
echo "<br>";
echo $headers;
}
$handle = fopen($_FILES['filename']['tmp_name'], "r");
$header = fgetcsv($handle);
while(! feof($handle)){
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
mysql_select_db("EMC", $db);
$sql = "SELECT * from CSVtest";
$result = mysql_query($sql,$db);
while ($user_table_property = mysql_fetch_field($result))
{
for($i=0; $i<$num; $i++){
if($header[$i] == $user_table_property->name )
{
$import = "insert into CSVtest ( `" . $header[$i] . "`) values ('" . $data[$i] . "')";
}
}
mysql_query($import) or die(mysql_error()) ;
}
}
}
fclose($handle);
print "Import done";
I can tell you that you’re not interpolating the array values properly:
When they’re array values, you have to use
{}around the variable and index (or indices) for it to expand the variable value.Also, it should probably be doing something like this:
You don’t have any
mysql_query()or whatnot in theifstatement, so it’s not apparent the code is going to work (you can’t run$importafter theforloop or it will only have the last$importset).The whole technique you’re using here doesn’t seem correct anyway; you probably actually want to build the column and value lists, then after the
forloop,implode()them into a string for$import.