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

    Column 'username_proprietario' in where clause is ambiguous

    Salve a tutti,
    ho scritto uno script per inserire dei dati in una tabella cliccando un link, ma mi restituisce questo:
    codice:
    Column 'username_proprietario' in where clause is ambiguous
    quando carico la pagina dove è inserito lo script. Come posso risolvere per fare funzionare lo script?
    Ecco il codice:
    Codice PHP:
    <?php 
    if(!isset($_SESSION)){session_start();}   
    if(!isset(
    $_SESSION['utente'])){  
        
    header("location: login2.php?azione=login");  
        exit();    
    }  
     
    ?> 
       
    <?php 
    require_once "connessione.php"
    if(isset(
    $_GET['user'])){
        
    $query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')"); 
        
    $inviautente=mysql_query($query) or die(mysql_error());    
        
    header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");     

    $query "SELECT * FROM amici, amici_temp WHERE username_proprietario='".$_SESSION['utente']."'"
    $result mysql_query($query) or die(mysql_error()); 
    if(
    mysql_num_rows($result)==0){ 
            echo 
    "<a href=\"?user=".$_GET['id']."\" onclick=\"return(confirm('Sei sicuro di voler inoltrare la richiesta di amicizia?'))\">Aggiungi agli amici!</a>"
    }else{    
            echo 
    ""
        } 
    ?>
    Grazie a tutti in anticipo per il vostro aiuto,
    cicciaramba.

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Codice PHP:
    $query "SELECT * FROM amici, amici_temp WHERE amici.username_proprietario='".$_SESSION['utente']."'"

    // oppure

    $query "SELECT * FROM amici, amici_temp WHERE amici_temp.username_proprietario='".$_SESSION['utente']."'"

    // devi direle a quale tabella si riferisce il campo username_proprioetario 
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  3. #3
    Originariamente inviato da las
    Codice PHP:
    $query "SELECT * FROM amici, amici_temp WHERE amici.username_proprietario='".$_SESSION['utente']."'"

    // oppure

    $query "SELECT * FROM amici, amici_temp WHERE amici_temp.username_proprietario='".$_SESSION['utente']."'"

    // devi direle a quale tabella si riferisce il campo username_proprioetario 
    E se io voglio selezionarlo da tutte e due contemporaneamente?

  4. #4
    o usi gli alias per le tabelle o usi nome_tabella.nome_campo as alias_campo. Esempio:

    codice:
    select tabella_1.campo as campo_da_tabella_1, tabella_2.campo as campo_da_tabella_2 from tabella_1,tabella_2...
    oppure

    codice:
    select t1.campo as campo_da_tabella_1,t2.campo as campo_da_tabella_2 from tabella_1 as t1, tabella_2 as t2...
    questo vale sia per i campi nella select che per quella nella where, se hanno lo stesso nome devi distinguerli altrimenti quel poraccio del database che ne sa?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    la selezione, intesa come estrazione di dati, la farà da tutte e due contemporaneamente ma la clausola WHERE deve sapere cosa controllare, se poi devi estrarre le righe che hanno entrambe le colonne con quel dato valore:

    Codice PHP:
    $query "SELECT * FROM amici, amici_temp WHERE amici.username_proprietario='".$_SESSION['utente']."' AND amici_tmp.username_proprietario='".$_SESSION['utente']."' '"

    // oppure le riche in cui almeno una delle due ha quel valore

    $query "SELECT * FROM amici, amici_temp WHERE amici.username_proprietario='".$_SESSION['utente']."' OR amici_tmp.username_proprietario='".$_SESSION['utente']."' '"
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  6. #6
    Originariamente inviato da las
    la selezione, intesa come estrazione di dati, la farà da tutte e due contemporaneamente ma la clausola WHERE deve sapere cosa controllare, se poi devi estrarre le righe che hanno entrambe le colonne con quel dato valore:

    Codice PHP:
    $query "SELECT * FROM amici, amici_temp WHERE amici.username_proprietario='".$_SESSION['utente']."' AND amici_tmp.username_proprietario='".$_SESSION['utente']."' '"

    // oppure le riche in cui almeno una delle due ha quel valore

    $query "SELECT * FROM amici, amici_temp WHERE amici.username_proprietario='".$_SESSION['utente']."' OR amici_tmp.username_proprietario='".$_SESSION['utente']."' '"
    Grazie, comunque avevo già risolto con l'OR. Ora mi sono accorto che lo script che ho scritto mi dà questo errore:'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1'.
    Credo si riferisca a questa query:
    Codice PHP:
    $query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')"); 
    come posso risolvere?
    Grazie ancora per il tuo aiuto.

  7. #7
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    la query a me sembra giusta, forse ci sono delle virgolette nei valori che la rovinano, prova a fare così

    Codice PHP:
    $sql "INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."') ";
    $query=mysql_query($sql) or die ($sql." - ".mysql_error()); 
    in modo da vedere la query effettiva
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  8. #8
    Originariamente inviato da las
    la query a me sembra giusta, forse ci sono delle virgolette nei valori che la rovinano, prova a fare così

    Codice PHP:
    $sql "INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."') ";
    $query=mysql_query($sql) or die ($sql." - ".mysql_error()); 
    in modo da vedere la query effettiva
    Perfetto , ma mi sai dire perché ogni volta che aggiorno la pagina dello script mi aggiunge il dato in tabella senza nemmeno cliccare sul link?
    Grazie ancora in anticipo.

  9. #9
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Originariamente inviato da cicciaramba
    Perfetto , ma mi sai dire perché ogni volta che aggiorno la pagina dello script mi aggiunge il dato in tabella senza nemmeno cliccare sul link?
    Grazie ancora in anticipo.
    se ho capito bene cosa intendi è perchè tu controlli se è settato $_GET['user'] per fare l'inserimento

    Codice PHP:
    if(isset($_GET['user'])){
        
    $query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')");
        
    $inviautente=mysql_query($query) or die(mysql_error());
        
    header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");      

    quindi in pratica quando cliccano una volta sul link andranno alla pagina

    pagina.php?user=50

    .... se poi fanno un refresh di quella pagina rimane la stessa quindi il controllo $_GET['user'] va a buon fine nuovamente e rifa l'inserimento.

    per ovviare potresti reindirizzare a un altra pagina appena fatto l'inserimento (tu adesso lo fai ma usando il refresh che quindi da il tempo all'utente di premere f5 o comunque di tornare indietro con il tasto del browser)
    in pratica al posto di

    codice:
     header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");
    usa
    codice:
     header("Location: profile2.php?id={$_SESSION['utente']}");
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  10. #10
    Originariamente inviato da las
    se ho capito bene cosa intendi è perchè tu controlli se è settato $_GET['user'] per fare l'inserimento

    Codice PHP:
    if(isset($_GET['user'])){
        
    $query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')");
        
    $inviautente=mysql_query($query) or die(mysql_error());
        
    header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");      

    quindi in pratica quando cliccano una volta sul link andranno alla pagina

    pagina.php?user=50

    .... se poi fanno un refresh di quella pagina rimane la stessa quindi il controllo $_GET['user'] va a buon fine nuovamente e rifa l'inserimento.



    per ovviare potresti reindirizzare a un altra pagina appena fatto l'inserimento (tu adesso lo fai ma usando il refresh che quindi da il tempo all'utente di premere f5 o comunque di tornare indietro con il tasto del browser)
    in pratica al posto di

    codice:
     header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");
    usa
    codice:
     header("Location: profile2.php?id={$_SESSION['utente']}");
    Il problema non è questo, ma che se anche si aggiorna la pagina prima di cliccare sul link si inseriscono i dati all'interno della tabella lo stesso. Tengo a precisare SENZA CLICCARE SUL LINK E PRIMA CHE SI CLICCHI SUL LINK, proprio quando carichi la pagina per visitarla.
    Grazie ancora per il tuo aiuto,
    cicciaramba.

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.