Visualizzazione risultati 1 fino 3 di 3

Discussione: Php & MySQL: le query ribelli

  1. #1
    Guest

    Predefinito Php & MySQL: le query ribelli

    Salve a tutti!
    Ne ho provate di tutti i colori, ma non sono riuscito a far funzionare a dovere MySQL su Altervista, mentere sul mio computer il codice sembra funzionare perfettamente :S

    Nel codice php per connettermi faccio (scusate il miscuglio tra inglese e ita, ma uso entrambi indistintamente XD):

    Codice PHP:
    $myconn = mysql_connect("localhost", "username", "password") or die("Impossibile connettersi al server mysql...");
    mysql_select_db("my_username", $myconn) or die("Impossibile connettersi al db...");

    $query = mysql_real_escape_string($_POST['query'], $myconn);
    $result = mysql_query($query, $myconn) or die("Maybe you've mistaken the sintax??");
    Il $_POST['query'] è un esempio per dire che ci metto il testo della query lì. Cmq sia ho provato ad eseguire alcune query ed ho ottenuto risultati inspiegabili. Ho cantellato tutte le tabelle sul db per avere una situazione pulite e ho fatto MOLTI test di questo tipo:

    prima di tutto ho creato una tabella:
    CREATE TABLE utenti (username CHAR(20) NOT NULL, password CHAR(40) NOT NULL, PRIMARY KEY(username));

    e fin qui tutto OK, ho anche provato a contollare per sicurezza:
    DESCRIBE utenti

    e come si ci aspetterebbe:
    Codice:
    username char(20) PRI
    password char(20)
    poi però al tentativo di inserire i dati, l'inaspettato:
    Codice:
    INSERT INTO utenti VALUES ("username", MD5("password"));
    FAILED
    
    INSERT INTO utenti VALUES ("username", "password");
    FAILED
    
    INSERT INTO utenti (username, password) VALUES ("username", "password");
    FAILED
    Insomma non funziona in nessuna pasta, l'unica cosa che mi worka è:
    INSERT INTO utenti() VALUES();

    ma non ha senso!! Ho messo NOT NULL quando ho creato la tabella! E questa è una riga vuota, ovvero costituita da due campi nulli!! XD

    se prima di eseguire la insert nulla faccio:
    SELECT * FROM utenti
    dice OK, e poi che ci sono 0 record

    Altimenti dopo mi da un numero di record pari al numero di righe vuote inserite...

    Da phpmyadmin sembra funzionare tutto correttamente :S
    Ho provato a fare la stessa IDENTICA query e tutto OK...
    Ora ho appena notato che forse c'è un altro problema, ma controllerò meglio dopo... per adesso sono curioso di vedere cosa ne pensate voi!!

    EDIT:

    Ho fatto un paio di modifiche, e adesso sembra funzionicchiare:
    -Ho tolto mysql_real_escape_string e ho inserito direttamente la stringa della query.
    -Ho cambiato il campo password da CHAR(40) a TEXT, poiché mi sono accorto che alcuni MD5 venivano tagliati XD

    Ho fatto una prova persiono usando freesql come db esterno e funziona benissimo!
    ... l'unico problema è che non capisco...
    perché non devo fare l'escape della stringa???? O_O

    Tra l'altro, se provo a prendere una stringa di interrogazione con il metodo post continua a darmi errori sulle interrogazioni un minimo complesse... e qui mi verrebbe pensare a qualcosa di escape... ma nn so, voi che dite? XD

    Grazie di cuore anticipatamente! Non so quant'è che ci giro in torno!
    Jacopo
    Ultima modifica di dreadnaut : 21-06-2008 alle ore 11.45.38 Motivo: + tag [php] + leggibilità

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Non ho capito se hai risolto il problema oppure no... ti informo comunque che "password" è una parola riservata di MySQL e che assegnata come nome di un campo può causare problemi...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Davvero è una parola riservata?! Non lo sapevo, grazie O_O
    Sembra funzioniCCHIARE cmq, ovvero funzionare solo in parte XD
    Ora provo a cambiare il nome del campo :P

    Cmq no, come dicevo quando invio una query con il metodo POST... alcune volte funziona altre no :S
    Voi come fareste per eseguire una query iniviata da un form??

    PS Grazie per la modifica del post, dreadnaut... in effetti adesso è molto più leggibile!
    Ultima modifica di jhack : 21-06-2008 alle ore 13.03.24

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •