Newsgroup: it.comp.www.php
Titolo: Principiante PHP e SQL

Ciao una domanda banale di chi e' alle prime armi:
come faccio a fare una query SQL abbastanza lunga usando il PHP, memorizzo
la query in una variabile?
Ho provato
$create = <<<CR
DROP TABLE IF EXISTS `Courses`;
DROP TABLE IF EXISTS `Modules`;
CR;
E poi 
$test_create=mysql_query ($create,$db1);
Ma ottengo un errore, eppure se stampo $create e' giusta. 
Grazie, mi rendo conto che e' una domanda stupida ma non riesco a
risolvere il problema.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Ma ottengo un errore, eppure se stampo $create e' giusta. 
No, $create non e' giusta perche' contine piu' query concatenate. DEVI
eseguirne una alla volta.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 eseguirne una alla volta.
Quindi non esiste un modo per fare piu' query contemporaneamente?
Mi sembra strano, comunque faro' cosi'.


Mi sembra strano, comunque faro' cosi'.
perche' ti sembra strano?

> perche' ti sembra strano?
Perche' se devo creare un database con diverse tabelle devo impostare una
variabile per ogni tabella e chiamare diverse volte mysql_query. Se le
query fossero SELECT sarebbe una cosa sensata ma per creare tabelle e'
"strano" no?
Comunque non e' l'unica "stranezza" che sto scoprendo di questo
linguaggio: dovevo usare nel mezzo di una pagina
header ("Location: ....");
in una pagina ma non sono riuscito ad evitare
" Cannot modify header information - headers already sent by (output
started at something...)" 
pur tentando le soluzioni proposte da PHP.net, ho rinunciato ho fatto il
collegamente in un altro modo. 
Non mi dispiace come linguaggio ma essere alla prime armi e' un problema!
Ciao, tanto penso che vi rompero' ancora un po' con qualche errore strano..


 il collegamente in un altro modo. 
E' sufficiente inserire ob_start() all'inizio dello script, attivare
l'output buffering tramite direttive di configurazione oppure evitare
di inviare dell'output prima di usare header() etc.
-- 
I am what I am, I do what I can


 di inviare dell'output prima di usare header() etc.
Purtroppo nella mia pagina non potevo evitare l'output né funziona
l'output buffering, ma comunque ho risolto.


parte di chi sta iniziando ad usarlo.
scusate la mia ignoranza: mi citate un linguaggio in cui e' possibile
eseguire più query con un unica istruzione?

 l'output buffering, ma comunque ho risolto.
Per favore, precisa "né funziona l'output buffering".


 Ma ottengo un errore, eppure se stampo $create e' giusta. 
prova cosě:
$create=array();
$create[]="DROP TABLE IF EXISTS 'Courses'";
$create[]="DROP TABLE IF EXISTS 'Modules'";
foreach($create as $value){
   $test_create=mysql_query($value,$bd1);
}
ciao
Alesi_27

 eseguirne una alla volta.
E' consigliabile, ma non è obbligatorio. Il "driver" postgres di php ad 
esempio accetta tranquillamente query string con operazioni multiple.
-- 
Fabrizio "Hermooz" Ermini

 multiple.
Si, certo, se non fosse per il fatto che Tremendo sta utilizzando MySQL
...
-- 
I am what I am, I do what I can


eseguire più query con un unica istruzione?
PostgreSQL.
Ma se proprio uno vuole, puo' scriversi un wrapper in PHP che esegua delle
query multiple anche in MySQL. Ovviamente le esegue una alla volta :-), ma
diventa possibile scrivere
	SQLExec($conn, "DROP TABLE test; CREATE TABLE test (x integer);
INSERT ...;");
Anche piu' ovviamente, il consiglio e' "NON FARLO". Tanto, che cambia?
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio