Italian Adorabile PHP

Discussion in 'Italian Forum' started by LucaMs, Jan 10, 2018.

Tags:
  1. LucaMs

    LucaMs Expert Licensed User

    Semplice inserimento di due campi in una tabella.

    Modifico il tipo di un campo, da INT a Char (tabella dati vuota).

    Modifico la vecchia query funzionante, sostituendo:

    Values($DatoNumerico, '$DatoTesto')

    con

    Values('$NuovoDatoTesto', '$DatoTesto')

    (ovviamente i nomi delle variabili qui sono inventati)

    e l'inserimento non avviene (testato url tramite browser, ed ha sempre funzionato)

    Provato anche senza apici.

    Possibile che non venga restituito un errore (perlomeno da brower)?
     
  2. Star-Dust

    Star-Dust Expert Licensed User

    boh. Sto usando PHP per la prima volta adesso per la mia App.
    Ogni tot invia dati del gps su un DataBase usando PHP (molto più semplice di fireBase)
    2 codici copiati da un tutorial. e funziona tutto bene.... per il momento.
     
    LucaMs likes this.
  3. LucaMs

    LucaMs Expert Licensed User

    Devo provare tramite l'app, almeno per vedere se mi restituisce un errore; ma ero (e sono) stanco; con la fortuna che ho trovo sempre piccoli o grossi problemi, ogni due righe di codice che scrivo (e non è che mi sia rincojonito improvvisamente - né che lo sia mai stato :D - sono intoppi strampalati che spuntano come i funghi e che non dipendono da me... tipo questo).

    C'è ancora chi ama programmare; per me è solo stress.
     
  4. LucaMs

    LucaMs Expert Licensed User

    Passetto in avanti: usando l'app anziché il browser mi arriva un msg di errore (un mio echo, comunque, non un errore di php o mysql).
     
  5. sirjo66

    sirjo66 Well-Known Member Licensed User

    in teoria dovrsti usare
    Values($NuovoDatoTesto, '$DatoTesto')
    (quindi con gli apici solo nei dati ma non nel nome del campo) ma probabilmente sbaglio io a capire, per cui sarebbe meglio se mostri la query completa

    Mi confermi che $NuovoDatoTesto contiene il nome del campo e $DatoTesto contiene i dati da scrivere nel campo ???
     
    LucaMs likes this.
  6. LucaMs

    LucaMs Expert Licensed User

    No, sono entrambi valori (infatti stanno nella parte Values della query).


    Novità: adesso, nell'app, mi ritorna un "Nick già esistente" (quindi mio messaggio) per un inserimento... in una tabella completamente vuota.
    E ripeto che tutto funzionava, anche questo controllo che non ho affatto toccato.

    La query è semplicissima (qui cambio qualcosina per ragioni di privacy):
    $Query = "INSERT INTO MiaTabella (`UserID`, `Nick`) VALUES ('$UserID', '$NickChosen')";

    e, dopo aver modificato il tipo UserID da INT a Char nella tabella, l'unica altra cosa che ho cambiato è stato aggiungere gli apici intorno a $Nick, in quanto adesso è un dato testuale.
     
  7. sirjo66

    sirjo66 Well-Known Member Licensed User

    in teoria dovrebbe andar bene, però puoi provare con:
    $Query = "INSERT INTO MiaTabella (UserID,Nick) VALUES ('$UserID', '$NickChosen')";
    però occhio che $UserID e $NickChosen non devono contenere apici !!

    eventualmente puoi trasformare il tutto in
    $Query = "INSERT INTO MiaTabella (UserID,Nick) VALUES ('".str_replace("'","''",$UserID)."', '".str_replace("'","''",$NickChosen)."')";

    Se ancora non funziona devi lavorare ad un livello ancora più basso fino a quando trovi che cosa non funziona, per cui trasformi la tua query in
    $Query = "INSERT INTO MiaTabella (UserID,Nick) VALUES ('MioID', 'MioNick')";

    in modo da togliere le variabili di PHP e vedere se così lo inserisce, è solo un test per capire se il problema è la query o le variabili

    Altra cosa che mi è venuto in mente è che il campo UserID se ha un indice univoco devi cancellare l'indice e ricrearlo, perchè se hai cambiato il tipo campo da Int a Varchar può essere che l'indice non è stato ricreato con il tipo giusto
     
    LucaMs likes this.
  8. LucaMs

    LucaMs Expert Licensed User

    Mooolto probabilmente ho trovato l'errore.

    In realtà avevo aggiunto un paio di cambi alla tabella, uno dei quali non è previsto che possa essere Null e non glielo passavo.
    Ma il punto principale di questo thread è proprio questo: possibile che non venga segnalato errore???

    Poi dice che uno compra 20kg di aspirine e ci fa colazione! :p.

    Intanto, grazie per l'aiuto; poi vi faccio sapere se fosse esattamente quello il problema (probabile)
     
  9. LucaMs

    LucaMs Expert Licensed User

    Esatto.
     
  10. sirjo66

    sirjo66 Well-Known Member Licensed User

    Di solito sì, dipende se nel tuo codice PHP gestisci l'errore oppure no, ad esempio io di solito uso questo:

    Code:
    $rs = mysql_query($query);
    if ($rs === false) {
       echo 
    "Errore query\n".mysql_error()."\n".$query;
       
    return;
    }
    e ovviamente la mia applicazione ricevendo una stringa che inizia con "Errore" capisce che c'è qualcosa che non va e riesce anche a mostrare l'errore che viene appunto restituito da mysql_error()
     
    LucaMs likes this.
  11. LucaMs

    LucaMs Expert Licensed User

    Avevo provato ma pare non funzionare; probabilmente perché uso mysqli_query anziché mysql_query (non essendo esperto, non ne conosco con certezza la differenza... credo sia una novità per pagine OOP? Mah, non mi ci addentro, essendo solo roba temporanea).
     
  12. udg

    udg Expert Licensed User

    Lo scorso fine settimana ho acquistato il famoso VPS di Aruba a 1 euro (e finora non ho avuto il tempo nemmeno di collegarmici per la prima volta..). Comunque, posso confermare che quello è il vero costo (1.22 compresa IVA) e poi si pagano a parte servizi come backup e simili. Puoi scegliere tra diversi sistemi operativi (io ho scelto CentOS 7 64 bit). Vi aggiornerò appena avrò maturato un minimo di esperienza...
     
    LucaMs likes this.
  13. LucaMs

    LucaMs Expert Licensed User

    Eh, dovrei farlo anch'io.
    Problemino è che si tratta di Linux; speriamo almeno che forniscano un'interfaccia web o perlomeno un client che faciliti le cose.
     
  14. sirjo66

    sirjo66 Well-Known Member Licensed User

    con mysqli non cambia nulla, basta che chiami mysqli_error()
     
    Star-Dust and LucaMs like this.
  15. udg

    udg Expert Licensed User

    Hanno anche opzioni Windows Server, ma presumo si paghi un extra per le licenze..non vorrai che MS vada in miseria!

    ps: io di Linux ne so il giusto (anche meno) ma su Internet si trova tutto ciò che serve; per ora vorrei installare un broker Mosquitto e riadattare i miei B4J-services. Quindi alla fine dovrei avere la triade MySql, Mosquitto, B4J.
     
    LucaMs likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice