Te mando ese error porque el operador IN sirve para devolver aquellos registros cuyo campo indicado( en nuestro caso modo ) coincide con alguno de los de la lista( $cadena ). Porque no pruebas el código tal y como te lo puse, te lo vuelvo a dar pero como un caso práctico:
Código PHP:
<?php
// aquí debes poner tu array con las palabras a buscar yo puse estas pero puedes cambiarselas
$mode = array( 'es', 'la', 'los', 'este' );
// nos conectamos con el servidor
$con = mysql_connect( 'servername', 'username', 'password' );
// seleccionamos la base de datos que bamos a utilizar
$db = mysql_select_db( 'basededatos' );
// Combertimos en cadena nuestro array con ayuda de la función implode() con lo que la variable cadena contendrá ahora: "es, la, los, este"
$cadena = implode( "," $mode );
// hacemos la estructura de nuestra consulta con lo que el resultado sólo contendrá aquellos registros que contengan en el campo modo las palabras que están en la variable $cadena
$consulta = "SELECT * FROM tabla WHERE modo In ( ".$cadena." )";
$res = mysql_query( $res );
$num_res = mysql_num_rows( $res );
if ( !$num_res > 0 )
{
echo "No se obtuvieron resultados de la consulta";
exit;
}
else
{
while( $fila = mysql_fetch_array( $res ) )
{
// no hay necesidad de hacer otro bucle ( en tu caso quieres hacer otro bucle for para hacer una consulta )
// eso no es necesario ya que especificamos en la consulta que sólo queremos los registros que coincidan con las palabras que están en la variable $cadena
echo $fila['nombre_campo'];
}
mysql_close( $res );
}
?>
Con respecto a tu duda ¿como se podría hacer para que almacenara en $result todos los resultados formados por cada coincidencia del array con el campo varchar?. La respuesta ya la tienes en el código que te puse ya que la variable $res ya contiene los resultados como los necesitas.
Espero que ahora sí me hayas podido entender y que te haya servido esto para darte una idea.
P.D. Lee los comentarios que te puse en el código, son los que ves de color amarillo.
Suerte