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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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']."'";
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ho capito male prova

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

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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.
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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:
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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.
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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']."')");
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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?
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
perchè hai 2 tabelle?
ne basterebbe una sola
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
altra domanda:
in $_GET['id'] c'è l'id dell'amico o la username?
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
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.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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
Autore Titolo Forum Risposte Data
max1974 [Javascript] Datatables Export PDF Column Javascript 0
F [MySQL] Warning 1265 data truncated for column... MySQL 5
U [PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause' PHP 2
S Column 'regione' in where clause is ambiguous MySQL 6
L Column count doesn't match value ..... Classic ASP 2
I sessione username PHP 1
I sessione username scarica file PHP 1
S [PHP] estrarre dati sito web protetto con username e password PHP 13
P scavalca il controllo dello username PHP 1
C Login con username con accento tipo "Canicattì" PHP 5
L form username e password Classic ASP 4
I username e password per il database PHP 4
P controllo username Ajax 6
L funzione per nascondere username PHP 5
A Problema con UPDATE table SET username = $_SESSION["username"] PHP 22
A haccess regex username PHP 11
K Cambiare username Supporto Mr.Webmaster 1
Z Joomla 2.5.8 con problemi di accesso al admin panel username e password non riconosciuti Joomla 0
V Recuperare Username di una Sessione PHP 3
S Estrazione Username PHP 44
S Problemi estrazione username PHP 59
E Salvataggio username (era: Problema PHP 5.3.6) PHP 15
D Ottene username account Twitter PHP 4
borgo italia username e password Discussioni Varie 9
foki Problema Controllo Username HELP PHP 3
L Creare proprietario, gruppi e utenti per permessi cartella e file PHP 4

Discussioni simili