Quindi sto provando a prendere una stringa di ricerca (potrebbe essere un numero qualsiasi di parole) e trasformare ogni valore in una lista da usare nella seguente istruzione IN) inoltre, io bisogno di un conteggio di tutti questi valori da utilizzare con il mio conteggio filtroCome posso usare una matrice all'interno di una query SQL
$search_array = explode(" ",$this->search_string);
$tag_count = count($search_array);
$db = Connect::connect();
$query = "select p.id
from photographs p
left join photograph_tags c
on p.id = c.photograph_id
and c.value IN ($search_array)
group by p.id
having count(c.value) >= $tag_count";
Attualmente non restituisce risultati, idee?
Soluzione:
$search_array = explode(" ",$this->search_string);
foreach ($search_array as $key => $value) {
$new_search_array[] = "'$value'";
}
$search_string = implode(',', $new_search_array);
Questo mi dà un elenco separato da virgole
È possibile ottenere lo stesso con ' "'". implode ("','", $ search_array). "'", anche se forse non è elegante come la tua soluzione :-) –
Oh bello, non ci avevo nemmeno pensato! –
Soluzione piacevole, ma si noti che questo non funzionerà come previsto in PHP prima di 5.3, poiché array_reduce() accetta solo un numero intero come terzo parametro in 5.2 e precedenti. Di conseguenza, la stringa sarà come "0", "uno", "due", ... " –