Perfecto, pero hay al menos dos problemas:
1.
No pongas código de programación aquí porque contradice las reglas del foro (ter párrafo de
Función de la sección Base de Datos). Es muy posible que tu puedas leerlo, pero muchos de nosotros trabajamos con SQL, ya que es SQL lo que se usa en las bases de datos, y el código de programación resulta
"sucio" de leer.
2. Referente a tu problema, si veo que está
parcialmente administrado el proceso de crear la cadena de búsqueda, pero no está bien hecho, ya que los apóstrofes deben encerrar no sólo la cadena,
sino también al signo %. Si te fijas con cuidado, las variables contienen cosas tales como "'palabracontneida'", pero deberían contener "'%palabracontenida%'", por lo cual el valor buscado es
erróneo.
3. Además veo un problema adicional por cuanto (si entiendo bien el sentido de las sentencias) están poniendo una carga condicional de las variables tal que si no entra nada, entonces le ponga NULL... lo que es realmente absurdo en el contexto de SQL.
Me explico: En las operaciones de consulta
NULL no es equivalente a vacío. NULL genera una respuesta nula en la operación, y en este contexto:
Código sql:
Ver originalSELECT *
FROM erasmus
WHERE Num_Tes_ESN LIKE NULL AND Nome LIKE %s AND Cognome LIKE %s ORDER BY Cognome ASC;
hace que no devuelva nada. No importa si los demás valores son válidos. La comparación de un campo con NULL no se realiza con LIKE sino con IS NULL.
4. Finalmente: Si existe la posibilidad de que unos de los valores a usar en la búsqueda no ingresa, no puedes poner ni NULL ni vacío con LIKE, ya que en el primer caso no te devolverá nada, y en el otro te devolverá un error. En todo caso lo que debe hacerse es que lo que se agregue sea todo el bloque
LIKE '%palabra%' , con lo que tendrás que administrar la entrada de los AND que deben ir...