2009-09-22 9 views
5

Estoy tratando de obtener una cadena PHP a descomponerse en palabras individuales, buscar en una base de datos y luego agregar los resultados en otra base de datos ..romper las cadenas con explotar y foreach

Actualmente tengo el cadena como esta

"SDGCC, surgen, SDGFS"

Quiero buscar en la tabla de etiquetas de inicio de sesión para etiquetas como estas palabras que estoy usando este

SELECT * FROM logintags DONDE COMO tag '% cadena%'

de manera que cada etiqueta se toma de la cadena He intentado usar explotar y foreach, pero no parece estar recibiendo el efecto deseado.

$ string = $ _POST ['tags'];

$ etiquetas = explotar (',' $ cadena);

foreach ($ etiquetas como $ clave) {

$ consulta = mysql_query ("SELECT * FROM dept_logintags DONDE tag COMO '%" $ tecla "%..'"); $ r = mysql _fetch _object ($ query);

$ inserto = mysql_query ("INSERT INTO briefings_logintags (id, briefing_id, logintag_id) VALUES (NULL, '$ id', '" ")" $ r-> Identificación..');

}

el efecto que estoy tratando de crear para cada etiqueta es crear una referencia entre la etiqueta de identificación y el identificador de sesión informativa ...

Sin embargo, parece ser sólo para poner una entrada correcta en la base de datos.

Respuesta

3

Si hay un espacio después de la coma en la cadena original, entonces explotar() devolverá algo como ["SDGCC", "ARISE", "SDGFS"].

Esto hará que su cláusula LIKE coincida solo con la primera palabra. Trate de usar trim():

$word=trim($key); 
$safe=mysql_real_escape_string($word); 
$query=mysql_query("SELECT * FROM dept_logintags WHERE tag LIKE '%".$safe."%'"); 

EDIT: Como se ha mencionado Artelius, siempre escapar de los datos enviados por los usuarios a evitar la inyección de SQL.

24

Trate

$tags = explode(',',$string); 

foreach($tags as $key) {  
    echo '"'.$key.'"<br/>';  
} 

Mi conjetura es que vas a encontrar un espacio antes de que surjan y SDGFS.

Además, asegúrese siempre de escape strings correctamente antes de ponerlos en consultas MySQL !! De lo contrario, alguien puede enviar entradas contaminadas a su servidor y causar estragos en su base de datos. (Esto se llama SQL injection.)

+0

Debería ser la respuesta aceptada. – Sandhu

-6

Por favor, por el amor de Internet, no construya una consulta SQL usted mismo. Use PDO.

Cuestiones relacionadas