Forse è una domanda stupida, ma ho questa necessità, devo salvare una query all'interno di un campo della tabella, non il risultato, maproprio una query vera è propria.
Grazie
SK
Forse è una domanda stupida, ma ho questa necessità, devo salvare una query all'interno di un campo della tabella, non il risultato, maproprio una query vera è propria.
Grazie
SK
e dov'è il problema? una query altro non è che una stringa.
Eh, il problema è che quando faccio l'insert dei vari campi, prende la query cheb devo salvare come se fosse parte della query insert e mi da ovviamente errore.Originariamente inviato da google01
e dov'è il problema? una query altro non è che una stringa.
Non so se mi sono spiegato?
Grazie
posta il codice che non funziona che gli diamo un'occhiata![]()
Tutte le query vengono eseguite da una funzione quindi abbiamo:
i valori passati come intuibile sono array che vengono implosi, e la query funziona, ne ho 80.000 nel lavoro che sto facendo fatte così.codice:open_db_core(" INSERT INTO coda_newsletter (".implode(",", $campi_db).") VALUES (".implode(",", $campi_valori).") ");
Ora per semplificare, fai conto che il campo aggiungo all'array "$campi_valori" abbia un tot di valori ed in ultimo, dopo aver composto la query che mi interessa banalmente così:
ottengo la mia variabile $query che contiene la stringa della query che voglio salvare come testo nel mio campo nella mia tabellacodice:$query = " SELECT clienti.cleinte, clienti.referente_cognome_nome, clienti.referente_email FROM clienti WHERE clienti.id IN(".implode(',',posts('clienti')).") LIMIT 50";
poi la aggiungo all'array campi:
dove "query" è il nome del campo nella tabella e "$query" il suo corrispettivo valore.codice:$campi[] = array('query',$query);
Nulla più, non mi soffermerei nella procedura, perchè come ho detto la uso mille volte, semplicemente non riesco ad inserire in un campo una query come se fosse una stringa, ma viene vista come se fosse parte della query di insert.
Grazie
presumo tu abbia una tabella adibita ad accogliere le query da salvare.
potresti dunque fare una insert di una query bonificata con un replace da apici e doppi apici.
codice:$sub_query = "SELECT clienti.cleinte, clienti.referente_cognome_nome, clienti.referente_email FROM clienti WHERE clienti.id IN(\".implode(\\'\\',\\'\\',posts(\\'clienti\\')).\") LIMIT 50"; $query = "insert into query_table ('command') value ($sub_query);"
ma l'implode produce dei numeri che vanno salvati come tali, non devo salvare la query con implode.Originariamente inviato da google01
presumo tu abbia una tabella adibita ad accogliere le query da salvare.
potresti dunque fare una insert di una query bonificata con un replace da apici e doppi apici.
codice:$sub_query = "SELECT clienti.cleinte, clienti.referente_cognome_nome, clienti.referente_email FROM clienti WHERE clienti.id IN(\".implode(\\'\\',\\'\\',posts(\\'clienti\\')).\") LIMIT 50"; $query = "insert into query_table ('command') value ($sub_query);"
dopo che hai salvato la stringa nella var $query (e quindi è stata eseguita l'implode) togli tutti gli apici e doppi apici
Codice PHP:
$new_query = str_replace("'", "\\\\\\\'", $query);
Guarad, ho provato con:Originariamente inviato da google01
dopo che hai salvato la stringa nella var $query (e quindi è stata eseguita l'implode) togli tutti gli apici e doppi apici
Codice PHP:
$new_query = str_replace("'", "\\\\\\\'", $query);
e pare funzionare, in effetti se non si mettono gli slashes li considera "validi" nella query, mettendoli li interpreta come stringa, come dici tu probabilmente dovrebbe complicare ancora di più la cosa, perchè li vai a togliare.codice:$campi[] = array('query',"'".addslashes($query)."'");
Quindi in pratica se si ha una query tipo:
SELECT campo FROM tabella WHERE camnpo = 'pippo'
viene interpretato dalla query di insert se invece diventa:
SELECT campo FROM tabella WHERE camnpo = \'pippo\'
"sembra" digerirlo, poi magari procedendo mi rendo conto che non funziona nemmeno così![]()
io ho detto "togli" per "trattali con l'escape". infatti il mio esempio mi sembra autoesplicativo.
Comunque, ricordati di inserire la query con i backslash all'interno di una insert.
Altrimenti non funzionerà mai.