Page 1 sur 1

MYSQL problème LIKE IN

Posté : 18 févr. 2008, 16:29
par yuuzhantar
Bonjour

j'ai un petit problème avec la syntaxe de LIKE IN avec mysql 5.0.45

c'est pour des projets de programmation pour l'iut,
j'ai ce code :
	if(!empty($realisateurs))
		{
		$tables.=",r_film_realisateur rfrea ";
		$champs.=",rfrea.* ";
		$conditions.=" AND (rfrea.id_film=f.id_film AND rfrea.id_real IN (
			SELECT id_real from realisateur WHERE nom_r LIKE IN(".sepLigneRech($realisateurs).") OR prenom_r LIKE IN (".sepLigneRech($realisateurs).")))";
		}
avec la fonction sepLigneRech(
function sepLigneRech($valeur)
	{
	$return="";
	$valeur2=explode("\r\n",$valeur);
	
	foreach($valeur2 as $clee=>$val)
		{
		$valeur2[$clee]=trim($valeur2[$clee]);
		if(!empty($valeur2[$clee]))
			{
			$valeur3=explode(" ",$valeur2[$clee]);
			foreach($valeur3 as $klee => $vl)
				{
				if(!empty($vl))
					{
					$return.="'%$vl%',";
					}
				}			
			}
		}
	$return=trim($return); // servira à supprimer la dernière virgule
	$return= substr($return,0,strlen($return)-1);
	echo "<br>$return";
	return $return;
	}
donc au final voici un bout de la requête et le résultat
SELECT id_real
FROM realisateur
WHERE nom_r LIKE
IN (
'%Hou%', '%Philippe%'
)
LIMIT 0 , 30

MySQL a répondu:Documentation
#1064 - 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 'IN ( '%Hou%' , '%Philippe%' )
LIMIT 0, 30' at line 1
avec la table realisateur :
CREATE TABLE `realisateur` (
`id_real` int(4) NOT NULL auto_increment,
`nom_r` varchar(50) NOT NULL default '',
`prenom_r` varchar(50) NOT NULL default '',
PRIMARY KEY (`id_real`),
UNIQUE KEY `nom_r` (`nom_r`,`prenom_r`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=75 ;
mais je n'arrive pas a voir le problème, j'ai essayé plusieurs styles de syntaxe mais rien

pourriez vous me dire d'où vient le problème ?

merci

Posté : 18 févr. 2008, 16:31
par mcorgnet
Il me semble que LIKE ne peut pas être suivi de IN.


IN est utilisé pour effectuer une liaison entre deux SELECT, normalement.

Posté : 18 févr. 2008, 16:33
par yuuzhantar
bonjour

j'avais cru voir cette syntaxe sur internet mais si çà ne marche pas je vais modifier mon script

merci

Posté : 18 févr. 2008, 16:47
par Berzemus
j'avais cru voir cette syntaxe sur internet mais si çà ne marche pas je vais modifier mon script
:roll:
C'est courageux comme mode de redaction d'une requête.. :wink:

"Like in" n'existe pas (pour mysql), il suffit de consulter la doc.

Posté : 18 févr. 2008, 17:43
par yuuzhantar
re

j'ai réussit a faire sans

merci quand même

Posté : 19 févr. 2008, 22:29
par Truc
Modération :
yuuzhantar, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.