Errore di sintassi mysql?

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Salve a tutti,
ho uno script php dove vi sono delle query mysql che vengono eseguite in un database. Il problema è che, pur eseguendosi le query, 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'

Ecco i var_dump(); delle query che potrebbero essere interessate:

PHP:
"SELECT * FROM amici_temp WHERE username_proprietario = 'pinco' && username_amico = 'pallo'"

PHP:
"INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('pinco', 'pallo')"

Ecco il codice php:
PHP:
<?php 
if(!isset($_SESSION)){session_start();}   
if(!isset($_SESSION['utente'])){   
    header("location: login2.php?azione=login");  
    exit();    
}
require_once "connessione.php"; 
if (isset($_GET['user']) && isset($_GET['insert'])) { 
    $query = "SELECT * FROM amici_temp   
                   WHERE username_proprietario = '" . $_SESSION['utente'] . "'   
                         && username_amico = '" . $_GET['user'] . "'"; 
var_dump($query);
    $result = mysql_query($query) or die(mysql_error()); 
    if (mysql_num_rows($result) == 0) { 
        $q = "INSERT INTO amici_temp (username_proprietario, username_amico)   
                 VALUES ('" . $_SESSION['utente'] . "', '" . $_GET['user'] . "')"; 
var_dump($q);
        $query = mysql_query($q); 
        $inviautente = mysql_query($query) or die(mysql_error()); 
        header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}"); 
    } 
} 
$query = "SELECT * FROM amici_temp
                   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=\"?insert&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,
hackersatifal. :)
 
Ciao,
nei due var_dump che hai postato non ci sono errori
probabilmente l'errore si riferisce ad un altra query che hai nella stessa pagina
 
ciao
controlla questa query con il solito var_dump
PHP:
//....
$query = "SELECT * FROM amici_temp WHERE username_proprietario = '" . $_SESSION['utente'] . "' && username_amico = '" . $_GET['id'] . "'";
//....
perchè quando entri nella pagina è la prima query eseguita e non mi sembra che tu valorizzi $_GET['id'].
 
Ciao,
nei due var_dump che hai postato non ci sono errori
probabilmente l'errore si riferisce ad un altra query che hai nella stessa pagina

Nella pagina ho solo queste query. Ora mi sono accorto che non le esegue, quindi queste sono il problema, anche se anche io penso che non vi siano errori.
Come posso fare?
 
prova ad inserire il var_dump delle query direttamente nel SQL di phpmyadmin e vedi se ti restituisce qualche errore
togli gli apici doppi (")pero
incollala cosi
Codice:
SELECT * FROM amici_temp WHERE username_proprietario = 'pinco' && username_amico = 'pallo'
 
prova ad inserire il var_dump delle query direttamente nel SQL di phpmyadmin e vedi se ti restituisce qualche errore
togli gli apici doppi (")pero
incollala cosi
Codice:
SELECT * FROM amici_temp WHERE username_proprietario = 'pinco' && username_amico = 'pallo'

Su phpmyadmin non mi restituisce nessun errore.
 
nemmeno l'altra?
il record te lo trova?
 
Ciao, prova a modificare questa query:
PHP:
$query="SELECT * FROM amici_temp WHERE username_proprietario = '" . $_SESSION['utente'] . "' && username_amico='".$_GET['id']."'";
Con:
PHP:
$query = "SELECT * FROM amici_temp WHERE username_proprietario = '" . $_SESSION['utente'] . "' && username_amico = " . $_GET['id'];

Suppongo che ID sia un numero, quindi non ha bisogno di apici.

Edit:
Solo un consiglio: evita di scrivere più volte quando non ti stiamo rispondendo. Sicuramente, appena possiamo, rispondiamo indipendentemente dal numero di " up-posts".
 
Ultima modifica:
Ciao, prova a modificare questa query:
PHP:
$query="SELECT * FROM amici_temp WHERE username_proprietario = '" . $_SESSION['utente'] . "' && username_amico='".$_GET['id']."'";
Con:
PHP:
$query = "SELECT * FROM amici_temp WHERE username_proprietario = '" . $_SESSION['utente'] . "' && username_amico = " . $_GET['id'];

Suppongo che ID sia un numero, quindi non ha bisogno di apici.

Edit:
Solo un consiglio: evita di scrivere più volte quando non ti stiamo rispondendo. Sicuramente, appena possiamo, rispondiamo indipendentemente dal numero di " up-posts".

Id non ha valore di un numero, bensì di un nome. Comunque ho provato come mi hai detto tu e mi restituisce; "string(93) "SELECT * FROM amici_temp WHERE username_proprietario = 'pinco' && username_amico = pallo" Unknown column 'pallo' in 'where clause'"
 
ciao
ribadisco (SE LO SCRIPT CHE HAI POSTATO E'COMPLETO)
verifica la prima query che viene eseguita (quella prima del confirm) la prima volta che viene eseguita
il $_GET['id'] non è valorizzato quindi la query è monca, vedi commenti).
il $_GET['id'] si valorizza solo dopo che hai dato la conferma in quanto all'interno del
if (isset($_GET['user']) && isset($_GET['insert'])) {...}
alla riga
header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}");

PHP:
<?php 
if(!isset($_SESSION)){session_start();}   
if(!isset($_SESSION['utente'])){   
    header("location: login2.php?azione=login");  
    exit();    
}
require_once "connessione.php"; 
if (isset($_GET['user']) && isset($_GET['insert'])) { 
    $query = "SELECT * FROM amici_temp   
                   WHERE username_proprietario = '" . $_SESSION['utente'] . "'   
                         && username_amico = '" . $_GET['user'] . "'"; 
var_dump($query);
    $result = mysql_query($query) or die(mysql_error()); 
    if (mysql_num_rows($result) == 0) { 
        $q = "INSERT INTO amici_temp (username_proprietario, username_amico)   
                 VALUES ('" . $_SESSION['utente'] . "', '" . $_GET['user'] . "')"; 
var_dump($q);
        $query = mysql_query($q); 
        $inviautente = mysql_query($query) or die(mysql_error()); 
        header("Refresh: 1; URL= profile2.php?id={$_SESSION['utente']}"); 
    } 
} 
/******* VERIFICA QUESTA QUERY********
LA PRIMA VOLTA CHE CHIAMI LO SCRIPT */
$query = "SELECT * FROM amici_temp
                   WHERE username_proprietario = '" . $_SESSION['utente'] . "'   
                         && username_amico = '" . $_GET['id'] . "'"; 
var_dump($query);
/*la prima volta da:
string(xy) "SELECT * FROM amici_temp WHERE username_proprietario = 'pinco' && username_amico = ''"

*/
$result = mysql_query($query) or die(mysql_error()); 
if (mysql_num_rows($result) == 0) { 
    echo "<a href=\"?insert&user=" . $_GET['id'] . "\" onclick=\"return(confirm('Sei sicuro di voler inoltrare la richiesta di amicizia?'))\">Aggiungi agli amici!</a>"; 
} else { 
    echo ""; 
} 
?>
 
L'id lo prendo dall'url dell'iframe che è pagina.php?id=...
Comunque le query sono tutte corrette e valorizzate correttamente.
 
ciao
Ti prego borgo mi daresti una mano a capire la ragione dell'errore?
guarda che non sono un mago, ripartiamo da 0.
la pagina (guarda che gli do un nome a caso) dove hai lo script viene richiamata dentro un iframe (così almeno accenni) , giusto?
se si viene richiamata in questo modo?
PHP:
<!-- parte in cui valorizzi la variabile $qualcosa -->
<iframe name="pinco"
	   		src="accetta_amicizia.php?id=<?php echo $qualcosa; ?>"
	   		width="732px"
	   		height="418px"
	   		scrolling="auto"
	   		frameborder="0"
	   		align="top"
	   		marginwidth="0"
	   		marginheight="0"
	   		allowtransparency="true">
 </iframe>
intanto fammi sapere questo
 
ciao
altra domanda, perche nello script non vedo altro, visto che dici che i var_dump danno risultati giusti.
nella tabella amici_temp hai l'id int(12) not nul autotincrement primarykey ?
 

Discussioni simili