Salve,
quando eseguo il seguente codice sql :
SELECT node.nid AS nid, node.language AS node_language, node_data_field_segndata.field_segndata_value AS node_data_field_segndata_field_segndata_value FROM node node INNER JOIN content_type_segn_descrizione node_data_field_text_reparto ON node.vid = node_data_field_text_reparto.vid LEFT JOIN content_type_segn_descrizione node_data_field_segndata ON node.vid = node_data_field_segndata.vid WHERE (node.type in ('segn_descrizione')) AND (node_data_field_text_reparto.field_text_reparto_value IN ("MAGAZZINO", "VENDITA", "COMMERCIALE") AND (DATE_FORMAT(STR_TO_DATE(node_data_field_segndata.field_segndata_value, '%Y-%m-%dT%T'), '%Y-%m-%d') >= '2011-01-02') AND (DATE_FORMAT(STR_TO_DATE(node_data_field_segndata.field_segndata_value, '%Y-%m-%dT%T'), '%Y-%m-%d') <= '2011-01-02') ) AND (node.nid in (650, 741, 743, 745, 749, 751, 757, 762, 764, 766, 768, 770, 772, 774, 776, 781, 783, 785, 789, 804, 806, 808, 810, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 842, 844, 846)) ORDER BY node_data_field_segndata_field_segndata_value DESC
la funzione db_non restituisce nulla.
se elimino la seguente parte di codice :
AND (DATE_FORMAT(STR_TO_DATE(node_data_field_segndata.field_segndata_value, '%Y-%m-%dT%T'), '%Y-%m-%d') >= '2011-01-02') AND (DATE_FORMAT(STR_TO_DATE(node_data_field_segndata.field_segndata_value, '%Y-%m-%dT%T'), '%Y-%m-%d') <= '2011-01-02') )
tutto funziona correttamente.
Il codice completo fatto eseguire direttamente funziona.
Ho letto che ci potrebbero essere dei problemi con i caratteri di escape ma ho fatto filtare la stringa alla funzione db_escape_string() e anche la parte che funzionava gene degli erriri dovuti al fatto che le " e ' vengopno sostituite, rispettivamente, con \" e \' .
Potreste darmi indicazioni per la risoluzione dell'errore ?
Grazie buon lavoro...
Finalmente ho risolto !
bastava inserire i doppi %% dove compare % .
Questo perchè se non si inserisce il doppio carattere %% la funzione db_query si aspetta dei parametri.