[PHP] Problema creazione query a numero di parametri variabile

  • Creatore Discussione Creatore Discussione Lollo82
  • Data di inizio Data di inizio

Lollo82

Nuovo Utente
8 Ott 2017
4
0
1
Buongiorno ragazzi. Non sapevo dove postare la domanda trattandosi della creazione di una query. Ma essendo il problema la creazione della stringa ho reputato più corretto inserirla nella sezione php e non mysql. Se ho sbagliato chiedo scusa...
Veniamo al dunque... Eseguo una query di SELECT su una colonna di una tabella. E i risultati di tale query che possono essere uno, due o al massimo tre valori saranno il WHERE di una query successiva. I risultati della prima query li memorizzo all'interno di un array.
La mia difficoltà è... Come creo la query con un numero di WHERE che può variare??? L'idea di partenza era di usare il foreach concatenando OR id...=$array. Ma dopo il WHERE mi ritroverei un OR seguito da nulla...
Sicuramente la soluzione è la più stupida del mondo, ma vi giuro... Non mi viene. E non so manco cosa potrei googolare.
Grazie mille a tutti ragazzi.
 
Buonasera ragazzi. Ho risolto reparando i valori dell'array con la virgola utilizzando implode e ho passato la variabile alla clausula WHERE utilizzando id... IN (%variabile)
Grazie mille lo stesso e scusate il disturbo.
 
Anche se risolto potresti provare questo:
NB: Ricorda di inserire i "QUOT" in caso di stringa!
PHP:
$string_query='SELECT * FROM my_tbl WHERE';

$input=['id'=>1,'name'=>'giorgio','stato'=>0];
$string_query.=crea_query($input);

$input=['id'=>1,'id'=>2,'id'=>1000,...];
$string_query.=crea_query($input,'OR');

function crea_query($input,$type='AND'){
$string='';
   foreach($input as $k=>$v){
       $string.=' '.$type.' '.$k.' = '.$v;
   }
return $string;
}
 
ciao
un altro metodo può essere questo
se nel WHERE metti 1=1 ,sempre vero, e le varie clausole non vengono scritte in pratica è come non scrivere il WHERE, ti schematizzo
PHP:
//...
$we1=$we2="";
//esempio valorizzi i $weXY da un $_POST
if(!empty($uno)){$we1=" OR uno=\"$uno\"";}
if(!empty($due)){$we2=" OR due=\"$due\"";}
//e quanti altri servono
$query ="SELECT * FROM tabelle WHERE 1=1 $we1 $we2";
//....
in questo modo puoi combnare gli OR don gli AND e non ti rimane un OR o un AND sul fondo
 

Discussioni simili