Column 'username_proprietario' in where clause is ambiguous

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Salve a tutti,
ho scritto uno script per inserire dei dati in una tabella cliccando un link, ma mi restituisce questo errore:
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:
PHP:
<?php 
if(!isset($_SESSION)){session_start();}   
if(!isset($_SESSION['utente'])){  
    header("location: login2.php?azione=login");  
    exit();    
}  
 
?> 
<!-- tralascio l'html -->   
<?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.
 
ciao
per forza, come fa a sapere php se username_proprietario è un campo della tabella amici o della amici_temp

devi distinguerle
$query = "SELECT * FROM amici as a, amici_temp as t
poi nel where devi dirgli in quale tabella deve cercare

WHERE a.username_proprietario='".$_SESSION['utente']."'";
oppure
WHERE t.username_proprietario='".$_SESSION['utente']."'";
 
ciao
per forza, come fa a sapere php se username_proprietario è un campo della tabella amici o della amici_temp

devi distinguerle
$query = "SELECT * FROM amici as a, amici_temp as t
poi nel where devi dirgli in quale tabella deve cercare

WHERE a.username_proprietario='".$_SESSION['utente']."'";
oppure
WHERE t.username_proprietario='".$_SESSION['utente']."'";

E se io volessi eseguire il controllo in entrambe le tabelle con un'unica query?
 
ciao
se non ho capito male prova

WHERE a.username_proprietario='".$_SESSION['utente']."' or t.username_proprietario='".$_SESSION['utente']."'";
 
ciao
se non ho capito male prova

WHERE a.username_proprietario='".$_SESSION['utente']."' or t.username_proprietario='".$_SESSION['utente']."'";

Perfetto: funziona :mavieni:
Però ora mi sono accorto che mi restituisce 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:
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 borgo :D
 
ciao
per caso non è perchè da una parte usu get user a dalla l'altra get id?
Borgo è passata più di una settimana da quando ho cominciato a lavorare a questo script e non riesco a risolvere il problema. Mi sono ispirato a questo script che mi avevi fornito per eliminare un dato tramite un link:
PHP:
<?php 
if(!isset($_SESSION)){session_start();}   
if(!isset($_SESSION['utente'])){//immagino che venga da un log, quindi se il log non è giusto la sessione non deve esistere   
    header("location: pagina_che_vuoi.php");  
    exit();    
}  
//queste le uso perche quando si usa GET può essere pericoloso, i valori si vedono, in questo modo è più difficile 
//che un malintenzionato riesca ad individuare l'id (o quello che c'è nella querystringa) e di trasmetterlo 
function codifica_q($g){//camuffo 
    $prima=rand(100,999);//genero un numero casuale compreso tra 100 e 999 
    $q_p=strlen($prima);//questi servono nel caso cambiassi il numero delle cifre rand 
    $dopo=rand(10,99);//c.s. tra 10 e 99 
    $q_d=strlen($dopo);//questi servono nel caso cambiassi il numero delle cifre rand 
    return $q_p.$prima.$g.$dopo.$q_d; 
} 
function decodifica_q($g){//scamuffo 
    $num_prima=$g[0]+1; 
    $num_dopo=$g[(strlen($g)-1)]+1; 
    $num_id_orig=strlen($g)-$num_prima-$num_dopo; 
    return substr($g,$num_prima,$num_id_orig); 
} 
?> 
<!-- tralascio l'html , consiglio: usa i css esterni-->   
<?php 
require_once "connessione.php"; 
if(isset($_GET['id'])){//hai cliccato su DEL e hai confermato 
    //scamuffo l'id 
    $id=decodifica_q($_GET['id']); 
    $query="DELETE FROM bacheca WHERE Nome='".$_SESSION['utente']."' AND id='$id'"; 
    //utilizzando l'id del record non ti servirebbe qui nemmeno la  $_SESSION['utente'] 
    $inviautente=mysql_query($query) or die(mysql_error());    
    header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");     
} 
//altro piccolo consiglio: usa solo le minuscole per nomi campi e variabili, si evitano errori di digitazione 
$query = "SELECT * FROM bacheca WHERE Nome='".$_SESSION['utente']."' ORDER BY Nome, Data";//ti conviene metterli in ordine di nome 
//oppure  ORDER BY Data, Nome in ordine di data 
$result = mysql_query($query) or die(mysql_error()); 
if(mysql_num_rows($result)==0){ 
    echo "non ci sono messaggi da eliminare"; 
    //e qui metti un link per andare dove vuoi 
}else{
    //a me piace vedere i dati ordinati quindi te li metto in una tabella, che poi puoi formattare con i css 
    echo "<table><tr><th>data</th><th>nome</th><th>messaggio</th><th>eliminare</th></tr>"; 
    while($riga=mysql_fetch_array()){ 
        //qui poi puoi semplificare 
        $id=$riga['id'];//qui verifica come hai chiamato l'id del record, è meglio trasmettere l'id che la data per identificare il record 
        $data=date("d/n/Y g:i:s A", $riga['Data']); 
        $mss = stripslashes($riga['Messaggio']); 
        echo "<tr>"; 
        echo "<td>$data</td>"; 
        echo "<td>$mss</td>"; 
        //il prossimo link puoi poi formattarlo come vuoi con i css 
        //essendo l'eliminazione pericoloso ti ho messo un alert di conferma 
        echo "<td><a href=\"?id=".codifica_q($id)."\" onclick=\"return(confirm('stai eliminando il messaggio del $data CONFERMA'))\">DEL</a></td>"; 
        //se vai a vedere sorgente pagina vedrai che l'id è camuffato 
        echo "</tr>"; 
    } 
    echo "</table>"; 
} 
?>
Visto che non riesco a cambiarlo per eseguire un insert, potresti farmi un'enorme cortesia e farmelo tu?
Te lo sto chiedendo con il cuore, ti prego, ti prego, ti prego aiutami.
Se me lo scriverai tu te ne sarò per sempre grato,
hackersatifal.
 
ciao
devi avere un po' di pazienza. sono un po' incasinato, poi tra un paio di gg vado in ferie (corte)

Sì, mi dispiace per essere stato così, ma volevo solo sapere se eri disposto a scrivermi lo script entro brevi tempi visto che è una cosa che un mio amico mi ha chiesto di fargli entro le sette di questa sera. So che il tempo è pochissimo, ma ti prego di aiutarmi e te lo chiedo proprio per favore.
Ciao,
hackersatifal.:byebye:
 
Sì, mi dispiace per essere stato così, ma volevo solo sapere se eri disposto a scrivermi lo script entro brevi tempi visto che è una cosa che un mio amico mi ha chiesto di fargli entro le sette di questa sera. So che il tempo è pochissimo, ma ti prego di aiutarmi e te lo chiedo proprio per favore.
Ciao,
hackersatifal.:byebye:
Nessuno può aiutarmi a riscrivere lo script secondo quello che ho postato per eliminare un dato con un link da una tabella mysql?
Per favore aiutatemi.
Ciao a tutti e grazie in anticipo per il vostro aiuto,
hackersatifal.
 
Nessuno può aiutarmi a riscrivere lo script secondo quello che ho postato per eliminare un dato con un link da una tabella mysql?
Per favore aiutatemi.
Ciao a tutti e grazie in anticipo per il vostro aiuto,
hackersatifal.

Ti prego borgo di aiutarmi: non voglio che, per una sciocchezza del genere, la amicizia fra me e questo mio amico finisca.
Conto sul tuo aiuto moltissimo e te lo sto chiedendo come un favore enorme che, in qualche modo, tenterò di ricambiare: te lo prometto :).
Se lo farai non saprò mai come ringraziarti, ma proverò di tutto.
Grazie per il tuo aiuto,
hackersatifal.

P.S. L'ho convinto a rimandare la "data di scadenza" a oggi alle dieci di sera.
 
Però ora mi sono accorto che mi restituisce 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'.
non è $_GET['id]
PHP:
$query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')");
ma $_GET['user']
PHP:
$query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['user']."')");
 
non è $_GET['id]
PHP:
$query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')");
ma $_GET['user']
PHP:
$query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['user']."')");

E' sempre la stessa cosa: ogni volta che carico la pagina, anche per la prima volta, mi inserisce i dati nel database. Se riusciremo a risolvere la questione ti giuro che ti farò una statua:D
 
E' sempre la stessa cosa: ogni volta che carico la pagina, anche per la prima volta, mi inserisce i dati nel database.
allora non ho capito il problema
puoi rispiegarlo e postare il codice che stai usando?
 
allora non ho capito il problema
puoi rispiegarlo e postare il codice che stai usando?

Il problema è che, anche senza cliccare sul link 'Aggiungi agli amici!', ma solamente aggiornando la pagina o caricandola normalmente, questa parte dello script
PHP:
if(isset($_GET['user'])){ 
   $query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['user']."')"); 
   $inviautente=mysql_query($query) or die(mysql_error()); 
   header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");       
}
si esegue, mentre dovrebbe eseguirsi solamente una volta che il link 'Aggiungi agli amici!' è cliccato e confermato: questo è il 1° problema.
Il 2° è che del select il php non tiene conto, perché la scritta 'Aggiungi agli amici!' appare comunque, anche se nella tabella del database è già presente il dato.

Ecco il codice che uso io:
PHP:
<?php  
if(!isset($_SESSION)){session_start();}    
if(!isset($_SESSION['utente'])){   
    header("location: login2.php?azione=login");   
    exit();     
}   
  
?>  
<!-- tralascio l'html -->    
<?php  
require_once "connessione.php";  
if(isset($_GET['user'])){ 
   $query=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['user']."')"); 
   $inviautente=mysql_query($query) or die(mysql_error()); 
   header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");       
}
$query = "SELECT * FROM amici, amici_temp WHERE amici.username_proprietario='".$_SESSION['utente']."' OR amici_temp.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 ancora per il tuo aiuto,
hackersatifal.
 
perchè hai 2 tabelle?
ne basterebbe una sola
 
altra domanda:
in $_GET['id'] c'è l'id dell'amico o la username?
 
perchè hai 2 tabelle?
ne basterebbe una sola

Perché amici_temp è quella dove vanno a finire i dati prima che la richiesta venga accettata e amici quella in cui i dati finiscono dopo che l'amicizia viene confermata dall'utente al quale viene chiesta l'amicizia.
Spero di essere stato chiaro.
 
cmq
la seconda query avrebbe piu senso cosi:

PHP:
$query = "SELECT * FROM amici 
                   WHERE username_proprietario = '" . $_SESSION['utente'] . "' 
                         && username_amico = '" . $_GET['id'] . "'";
$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 "";
}
 

Discussioni simili