Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [bug php?]

  1. #1

    [bug php?]

    Ho notato una cosa stranissima, quando provo a popolare un db da un file csv, se il file inizia con la parola "tip" (esempio tipo.csv) la query non viene eseguita. E' un problema che avevo accennato in un'altra mia discussione che però on ho approfondito in quano pensavo che fosse un problema temporaneo. Invece anche questa volta mi da qusto problema.
    La versione di php che uso è la seguante: 5.1.2

    Sapete dirmi qualcos a riguardo?
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  2. #2
    Nessuno sa niente a riguardo? Non sto scherzando!
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  3. #3
    Originariamente inviato da spilloggino
    Nessuno sa niente a riguardo? Non sto scherzando!
    su load data local infile c'era un bug risolto in 5.1.3, ma si riferiva alla mancata segnalazione di errore per un file non trovato, fosse questo .txt o .csv che poi e' la stessa cosa.

    Se il nome e' corretto non vedo alcuna limitazione sul nome. Almeno per me funziona esattamente uguale sia tipo.csv che pippo.csv

    http://bugs.php.net/bug.php?id=36745

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Ho provato fino ad adesso a vedere il perchè di questo funzionamento strano. Ho aggiornato anche php alla versione 5.1.4; purtroppo non è stato risolto niente.
    Tutti i file (csv o txt) che iniziano per queste lettere, non mi funge il load....
    le lettere incriminate sono:
    b,n,r,t
    Quindi se un file inizia per queste lettere non succede nulla, si ferma su load data..... e non inserisce nulla; non da nesseun tipo di errore; è come se non trovasse il file e nonostante l'aggiornamento da me effettuato non da errore.
    Non so più cosa fare.
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  5. #5
    vedi un po' se ti dice qualcosa....

    codice:
    Tabella 11-1. Escaped characters
    
    sequence meaning 
    \n linefeed (LF or 0x0A (10) in ASCII) 
    \r carriage return (CR or 0x0D (13) in ASCII) 
    \t horizontal tab (HT or 0x09 (9) in ASCII) 
    \\ backslash 
    \$ dollar sign 
    \" double-quote 
    \[0-7]{1,3} the sequence of characters matching the regular expression is a character in octal notation  
    \x[0-9A-Fa-f]{1,2} the sequence of characters matching the regular expression is a character in hexadecimal notation
    evidentemente utilizzi male il carattere di escape cioe' il backslash \ , viene interpretato male. Prova ad usare lo slash oppure il doppio backslash.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Ciao, è questo il codice che utilizzo:
    $query = "LOAD DATA LOCAL INFILE 'c:\\"."$value' INTO TABLE $nom_tabella FIELDS TERMINATED BY ';' LINES TERMINATED BY '\\r\\n' ";

    Se al poste di $value c'è un file che inizia per una delle seguenti lettere il codice non va: b, n, r, t. Se invece c'è un file che inizia per una lettera diverse da quelle scritte è tutto ok.

    Non so proprio dove andare a sbattere.

    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  7. #7
    piu' che dirtelo..... viene scambiato per un carattere di controllo.....

    prova cosi':

    codice:
    $query = "LOAD DATA LOCAL INFILE 
              'c:/".$value."' INTO TABLE $nom_tabella 
               FIELDS TERMINATED BY ';' LINES TERMINATED BY '\\r\\n' ";

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Originariamente inviato da piero.mac
    piu' che dirtelo..... viene scambiato per un carattere di controllo.....

    prova cosi':

    codice:
    $query = "LOAD DATA LOCAL INFILE 
              'c:/".$value."' INTO TABLE $nom_tabella 
               FIELDS TERMINATED BY ';' LINES TERMINATED BY '\\r\\n' ";
    Grazie, adesso funziona.
    Ma come mai succedeva che solo con alcune lettere non funzionava? Mi potresti spiegare sta cosa?
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  9. #9
    Originariamente inviato da piero.mac
    vedi un po' se ti dice qualcosa....

    codice:
    Tabella 11-1. Escaped characters
    
    sequence meaning 
    \n linefeed (LF or 0x0A (10) in ASCII) 
    \r carriage return (CR or 0x0D (13) in ASCII) 
    \t horizontal tab (HT or 0x09 (9) in ASCII) 
    \\ backslash 
    \$ dollar sign 
    \" double-quote 
    \[0-7]{1,3} the sequence of characters matching the regular expression is a character in octal notation  
    \x[0-9A-Fa-f]{1,2} the sequence of characters matching the regular expression is a character in hexadecimal notation
    evidentemente utilizzi male il carattere di escape cioe' il backslash \ , viene interpretato male. Prova ad usare lo slash oppure il doppio backslash.
    perche' identifica la prima lettera come un carattere di controllo. Piu' chiaro di cosi'....

    e la terza volta che lo ripeto. Sono le lettere che vedi anche nel quote del manuale.

    esempio "c:\tipo.txt" viene letto come "\t + ipo.txt" e quindi il file non lo trova.

    \b come notazione exadecimale.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Originariamente inviato da piero.mac
    perche' identifica la prima lettera come un carattere di controllo. Piu' chiaro di cosi'....

    e la terza volta che lo ripeto. Sono le lettere che vedi anche nel quote del manuale.

    esempio "c:\tipo.txt" viene letto come "\t + ipo.txt" e quindi il file non lo trova.

    \b come notazione exadecimale.
    oK grazie mille, sei stato chiarissimo.
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.