? Estoy tratando de tomar una cadena de búsqueda (podría ser cualquier número de palabras) y convertir cada valor en una lista para usar en la siguiente declaración IN), además, necesito un recuento de todos estos valores para usar con mi contar filtro¿Cómo puedo usar una matriz dentro de una consulta 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";
¿Actualmente esto no arroja resultados, alguna idea?
Solución:
$search_array = explode(" ",$this->search_string);
foreach ($search_array as $key => $value) {
$new_search_array[] = "'$value'";
}
$search_string = implode(',', $new_search_array);
Esto me da una lista separada por comas
Usted puede lograr lo mismo con ' "'". implode ("','", $ search_array). "'" ', aunque tal vez no sea tan elegante como tu solución :-) –
¡Qué bien, ni siquiera había pensado en eso! –
Buena solución, pero tenga en cuenta que esto no funcionará como se esperaba en PHP antes de 5.3, porque array_reduce() acepta solo un entero como un tercer parámetro en 5.2 y anteriores. Como resultado, la cadena será como '0', uno '', '' dos '', ... '' –