Secondo me analizzare le query in questo mod e' un macello e mi sembra di capire che ci sian un problema di fondo sul funzionamento delle stringhe.
Se io faccio una sql essa dovra' rispettare la sintassi sql ossia le stringhe devono essere incapsulate o tra singoli apici o tra doppi apici.
Se tu generi la stringa con un altro linguaggio devi assicurarti che tale stringa arrivi correttamente formattata al server sql. Senno' ti dara' errore di sintassi per esempio :
Codice PHP:
// creiamo una stringa generica
// nota potrebbe benissimo essere anche caricata da database $_POST o altro
$valore = "ciao";
// Se facciamo la query di inserimentio :
$q1 = "insert into tabella (campo) values ( $valore )";
/*
NON funziona (anche se e' un'istruzione sintaticcamente corretta per php) in quanto a sql arriva la stringa
insert into tabella (campo) values ( ciao )
sql vede ciao senza apici o virgolette e lo interpreta come variabile, non esistendo tale variabile da errore.
*/
// SE invece facciamo
$q2 = "insert into tabella (campo) values ( '$valore' )";
/*
FUNZIONA perche a sql arriva
insert into tabella (campo) values ( 'ciao' )
Che e' sintatticamente corretta
*/
Come vedi devi forgiare le stringhe di queryin opportunamente.
Inoltre ti sconsiglio di effettuare una insert per ogni riga che hai. Se i dati sono tanti ti conviene dare cosi'
Codice PHP:
if(count($data)>0)
{
$q ="insert into tabella (campo) values ";
foreach( $data as $d )
{
$q .= " ('".$d."') ," ;
}
$q = substr( $q , 0 ,strrpos( $q , "," ) );
mysql_query( $q , $conn)or die(mysql_errorr());
}
Questo cosa fa ? genera una queery del tipo
insert into tabella (campo) values ('xxxxxx') , ('xxxxxx'), ('xxxxxx') ;
ed e' meglio che nn fare 1 insert per riga.