Ricerca da un array, LIKE?

Mary Azzurro

Nuovo Utente
7 Feb 2013
14
0
0
Salve a tutti! :)

Ho una tabella "articolo" in cui è presente un campo "chiave".
Ho bisogno di una select che cerchi all'interno di quel campo prendendo i dati da un array.
Ho provato in questo modo:

PHP:
$key = "economia, mercati, nazionali, sviluppo, efficienza";
$key = str_replace(" ", "", $key);
$key = explode(",",$key);

	foreach($key as $keys){
    	$sql_ric[] = 'chiave LIKE %'.$keys.'%';
	}
$sql_ric = 'SELECT * FROM articoli WHERE '.implode(" OR ", $sql_ric) or die(mysql_error());
$risultato = mysql_query($sql_ric, $con) or die(mysql_error());
while($riga_ric = mysql_fetch_object($risultato)){
echo $riga_ric->titolo;
}

Però mi da questo tipo di errore:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%economia% OR chiave LIKE %mercati% OR chiave LIKE %nazionali% OR chiave LIKE %s' at line 1

Mi sapreste aiutare?:confused:
 
Prova a cambiare questa riga:
PHP:
        $sql_ric[] = 'chiave LIKE %'.$keys.'%';
In:
PHP:
        $sql_ric[] = "chiave LIKE '%".$keys."%'";
 
Un'altra domanda... se dalla query volessi escludere un id, come potrei fare?
Ho provato così:
PHP:
$sql_ric = 'SELECT * FROM articoli WHERE '.implode(" OR ", $sql_ric).' AND idArticolo!="$id"' or die(mysql_error());
Ma non funziona, mi stampa comunque il contenuto dell'id che vorrei escludere.
 
Implode()?
Ma ce l'hai già l'id o lo devo cercare prima nella tabella?
 
Allora dovresti fare qualcosa del genere:
PHP:
$sql_ric = 'SELECT * FROM articoli WHERE ('.implode(" OR ", $sql_ric).') AND idArticolo!="$id"' or die(mysql_error());
 
Allora dovresti fare qualcosa del genere:
PHP:
$sql_ric = 'SELECT * FROM articoli WHERE ('.implode(" OR ", $sql_ric).') AND idArticolo!="$id"' or die(mysql_error());

Niente, non va... Ma ho provato ad usare il != anche da un'altra parte, ma non funziona proprio! :(
PHP:
$id = $_REQUEST['id'];
$sql_altri = 'SELECT * FROM editoriale WHERE idEditoriale!="$id" ORDER BY idEditoriale DESC LIMIT 10' or die(mysql_error());

L'id c'è, ho provato a con un echo e lo stampa. Non riesco a capire dov'è che sbaglio...
 
Prova a stampare la query prima di eseguita e metti la direttamente in phpmyadmin.
 
Prova a stampare la query prima di eseguita e metti la direttamente in phpmyadmin.

In phpmyadmin funziona e funziona anche se al posto di !="$id" metto !=1 ... il problema credo sia nella variabile.
Però è strano. Se faccio un echo alla variabile, il numero dell'id c'è!
 
Risolto! Ho investito i " con i ' e funziona!

PHP:
$sql_altri = "SELECT * FROM editoriale WHERE idEditoriale!='$id' ORDER BY idEditoriale DESC LIMIT 10" or die(mysql_error());
 

Discussioni simili