Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: Query annidate

  1. #1

    Query annidate

    Mi sto ponendo una domanda: si può mettere una insert sotto select? Cerco di spiegarmi meglio

    $sql = "SELECT * FROM USERS WHERE ORDINE='01'";
    $query = mysql_query ($sql) or die(mysql_error());
    $num_razze = mysql_num_rows($query);
    while ($row=mysql_fetch_array($query)){
    $NOME=$row["USERNAME"];


    $OBJ_POSTA=$_POST['OBJ_POSTA'];
    $MSG_POSTA=$_POST['MSG_POSTA'];


    $sql = "INSERT INTO POSTA (FROM_POSTA,TO_POSTA,OBJ_POSTA,MSG_POSTA,DATA_POST A,NEW_POSTA) VALUES ('$_SESSION[USERNAME]','$NOME','".addslashes($OBJ_POSTA)."','".addslash es($MSG_POSTA)."','$DATA_POSTA','1')";
    $query = @mysql_query ($sql) or die(mysql_error());




    }

    Chi mi aiuta?
    www.vagabondisullastrada.com
    www.terredinhal.it

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova così ho apportato alcune modifiche al tuo codice
    Codice PHP:
    $sql "SELECT * FROM USERS WHERE ORDINE='01'";
    $query mysql_query ($sql) or die(mysql_error());
    $num_razze mysql_num_rows($query);
    while (
    $row=mysql_fetch_array($query)){
    $NOME=$row["USERNAME"];
    }

    $OBJ_POSTA=$_POST['OBJ_POSTA'];
    $MSG_POSTA=$_POST['MSG_POSTA'];

    $sql_insert "INSERT INTO POSTA (FROM_POSTA,TO_POSTA,OBJ_POSTA,MSG_POSTA,DATA_POST A,NEW_POSTA) VALUES ('$_SESSION[USERNAME]','$NOME','".addslashes($OBJ_POSTA)."','".addslash es($MSG_POSTA)."','$DATA_POSTA','1')";
    $query_insert mysql_query ($sql_insert) or die(mysql_error()); 
    Se non funziona cerca d'indicare il motivo:
    - Da errori? Quali
    - Non esegue la select?
    - Passi i dati corretti?
    - Non esegue la insert?
    - Riceve dati corretti?
    Nel caso non dia errori, inserisci degli echo per monitorare si che dati passi sia che dati che estrae dalla select e cosa riceve la insert

    P.S. Quando posti del codice usa il tag [p-h-p].... codice ....[/p-h-p](senta trattini) rende lo stesso più leggibile sul forum
    Ultima modifica di cavicchiandrea; 16-02-2014 a 09:40
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Intanto grazier della risposta, allora mi fa solo la prima insert e basta,ma non da nessun tipo di errore
    www.vagabondisullastrada.com
    www.terredinhal.it

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    DATA_POST A
    addslash es($MSG_POSTA)

    Gli spazi sono errori di battitura? Se non lo sono, sono errori.

    @mysql_query ($sql)
    se davanti ad una funzione ci metti @ anche se va in errore, questo non ti verrà notificato, quindi se fallisce è ovvio che non te ne accorgi.

    $_SESSION[USERNAME], benché dovrebbe funzionare, usa sempre gli apici per la chiave associativa di un array $_SESSION['USERNAME']

    A che serve riassegnare ad ogni ciclo $OBJ_POSTA e $MSG_POSTA? Tanto avranno sempre lo stesso valore, mettili fuori dal while.
    Sei sicuro che la SELECT restituisca più di una entry? Sei sicuro sicuro? Hai provato a farti stampare il risultato di $num_razze per verificarlo?
    Non dare per scontato un risultato, verificalo sempre!

    Il tuo codice io lo scriverei così
    Codice PHP:
    $sql "SELECT * FROM USERS WHERE ORDINE='01'";
    $query mysql_query ($sql) or die(mysql_error());

    $num_razze mysql_num_rows($query);
    echo 
    'Ho trovato '.$num_razze.' razze<br />';

    $OBJ_POSTA=$_POST['OBJ_POSTA'];
    $MSG_POSTA=$_POST['MSG_POSTA'];

    while (
    $row=mysql_fetch_array($query))
    {
        
    $NOME=$row["USERNAME"];

        
    $sql "INSERT INTO POSTA (FROM_POSTA,TO_POSTA,OBJ_POSTA,MSG_POSTA,DATA_POSTA,NEW_POSTA) VALUES ('".$_SESSION['USERNAME']."','$NOME','".addslashes($OBJ_POSTA)."','".addslashes($MSG_POSTA)."','$DATA_POSTA','1')";
        
    $query = @mysql_query ($sql) or die(mysql_error());


  5. #5
    Non ci sono spazi senza underline, cmq ho provato come mi hai suggerito tu ma mi inserisce solamente il primo nome e non mi da errore.
    Senza la insert mi restituisce la lista completa dei nomi in database
    Ultima modifica di brucola; 16-02-2014 a 12:20
    www.vagabondisullastrada.com
    www.terredinhal.it

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Perché dare informazioni sempre a metà?
    L'echo di $num_razze cosa ti dice? Che numero ti restituisce?
    Se te l'ho fatto mettere ch sarà un motivo.

    Togli @ da qui e riprova
    $query = @mysql_query ($sql) or die(mysql_error());

  7. #7
    Allora $num_razze mi restitutisce 2, ho tolto la chiocciola e ora non mi inserisce neanche la prima
    www.vagabondisullastrada.com
    www.terredinhal.it

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Allora, invece di
    $query = @mysql_query ($sql) or die(mysql_error());

    scrivi
    echo $sql.'<br />';

    poi esegui a mano direttamente sul db (con phpmyadmin per esempio) le 2 query che ti stampa e vedi cosa succede.

  9. #9
    Ti ringrazio intanto per la tua gentilezza, a video mi dice che va tutto bene , infatti mi restituisce due insert
    Ho trovato 2 razze
    INSERT INTO POSTA (FROM_POSTA,TO_POSTA,OBJ_POSTA,MSG_POSTA,DATA_POST A,NEW_POSTA) VALUES ('Erick','Erick','Prova','1','','1')
    INSERT INTO POSTA (FROM_POSTA,TO_POSTA,OBJ_POSTA,MSG_POSTA,DATA_POST A,NEW_POSTA) VALUES ('Erick','Calliope','Prova','1','','1')
    Messaggio inviato
    e provandole da php admin fungono ambedue e mi immettono i dati come dovrebbe,ma online no
    www.vagabondisullastrada.com
    www.terredinhal.it

  10. #10
    Non capisco perchè nessuno faccia mai la prima ed unica e più semplice cosa da fare in questi casi e cioè quella di stampare la query PRIMA di eseguirla!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.