Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Salvare query in campo tabella

    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

  2. #2
    e dov'è il problema? una query altro non è che una stringa.

  3. #3
    Originariamente inviato da google01
    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.

    Non so se mi sono spiegato?

    Grazie

  4. #4
    posta il codice che non funziona che gli diamo un'occhiata

  5. #5
    Tutte le query vengono eseguite da una funzione quindi abbiamo:

    codice:
            open_db_core("
           INSERT INTO
           coda_newsletter
           (".implode(",", $campi_db).")
           VALUES
           (".implode(",", $campi_valori).")
           ");
    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ì.

    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ì:

    codice:
    		$query = "
    				  SELECT
    				  clienti.cleinte,
    				  clienti.referente_cognome_nome,
    				  clienti.referente_email
    				  
    				  FROM clienti
    				  
    				  WHERE clienti.id IN(".implode(',',posts('clienti')).") 
    				  
    				  LIMIT 50";
    ottengo la mia variabile $query che contiene la stringa della query che voglio salvare come testo nel mio campo nella mia tabella

    poi la aggiungo all'array campi:

    codice:
    $campi[] = array('query',$query);
    dove "query" è il nome del campo nella tabella e "$query" il suo corrispettivo valore.

    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

  6. #6
    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);"

  7. #7
    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);"
    ma l'implode produce dei numeri che vanno salvati come tali, non devo salvare la query con implode.

  8. #8
    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); 

  9. #9
    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); 
    Guarad, ho provato con:

    codice:
    $campi[] = array('query',"'".addslashes($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.
    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ì

  10. #10
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.