PDA

View Full Version : [PHP] Problema con l'inserimento in una tabella di database mysql


LS1987
06-03-2012, 08:15
Buongiorno, ho avuto qualche problema con la seguente insert in php (ometto parte del codice).
{
[...]
$queryString = "INSERT INTO c (IdConn, IdUser, IdUserDest) VALUES (null, '$idUser1', '$idUser2')";

echo "InsertConnection2 ".$queryString." <br>";
effettuaQuery($conn, $idUser1, $queryString, $msg);
}
function effettuaQuery ($conn, $queryString, $msg) {

echo "Effettua Query <br>";
if ((!isset($queryString)) || ($queryString == null)) {
echo "Query null <br>";
return ;
}
$result = mysql_query($queryString, $conn) or die ("Errore nella query".mysql_error());
echo $msg[0]. " <br>";

if ((!isset($result)) || ($result == null)) {
echo "Result null";
return ;
}
if ($msg[1] != "NULL") {
if ($msg[1] != "NADA")
echo $msg[1]. " <br>";
while ($riga = mysql_fetch_row($result)) {
foreach ($riga as $elemento) {
echo $elemento." " ;
}
echo "<br>";
}
}
}

Viene stampato il seguente output:

InsertConnection2 INSERT INTO c ('dConn, IdUser, IdUserDest) VALUES (null, '7', '5')

Errore nella query

L'errore che mi viene restituito è il seguente:

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 '7' at line 1

Pensavo che fosse corretto eseguire una Insert con questa sintassi. I campi della tabella sono tutti interi, non ci possono essere due coppie uguali (IdUser, IdUserDest) (UNIQUE).

Il Databse prova e la tabella c esistono quindi il problema non è quello.

La funzione effettuaquery funziona, perché l'ho già provata con altre Query.

ndakota
06-03-2012, 09:06
Buongiorno, ho avuto qualche problema con la seguente insert in php (ometto parte del codice).
{
[...]
$queryString = "INSERT INTO c (IdConn, IdUser, IdUserDest) VALUES (null, '$idUser1', '$idUser2')";

echo "InsertConnection2 ".$queryString." <br>";
effettuaQuery($conn, $idUser1, $queryString, $msg);
}
function effettuaQuery ($conn, $queryString, $msg) {

echo "Effettua Query <br>";
if ((!isset($queryString)) || ($queryString == null)) {
echo "Query null <br>";
return ;
}
$result = mysql_query($queryString, $conn) or die ("Errore nella query".mysql_error());
echo $msg[0]. " <br>";

if ((!isset($result)) || ($result == null)) {
echo "Result null";
return ;
}
if ($msg[1] != "NULL") {
if ($msg[1] != "NADA")
echo $msg[1]. " <br>";
while ($riga = mysql_fetch_row($result)) {
foreach ($riga as $elemento) {
echo $elemento." " ;
}
echo "<br>";
}
}
}

Viene stampato il seguente output:

InsertConnection2 INSERT INTO c ('dConn, IdUser, IdUserDest) VALUES (null, '7', '5')

Errore nella query

L'errore che mi viene restituito è il seguente:

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 '7' at line 1

Pensavo che fosse corretto eseguire una Insert con questa sintassi. I campi della tabella sono tutti interi, non ci possono essere due coppie uguali (IdUser, IdUserDest) (UNIQUE).

Il Databse prova e la tabella c esistono quindi il problema non è quello.

La funzione effettuaquery funziona, perché l'ho già provata con altre Query.

Questo è un refuso qui o che?


INSERT INTO c ('dConn,

LS1987
06-03-2012, 21:03
Questo è un refuso qui o che?


INSERT INTO c ('dConn,


Refuso: IdConn. Nulla di grave, poiché ho fatto un errore a copiare l'output (avrò sovrascritto un carattere per errore), mentre non ho fatto errori nel codice. C'è qualche taglio, ma il resto funzionava. Dà errore in quella query.

ndakota
06-03-2012, 21:11
Se i campi sono interi non devi mettere gli apici per le variabili nel values.

LS1987
06-03-2012, 21:56
Se i campi sono interi non devi mettere gli apici per le variabili nel values.

Ho provato anche senza, ma mi dà errore lo stesso. Sono tutti e 3 campi interi. Ho provato tutte le combinazioni con e senza apici, ma niente.

LS1987
07-03-2012, 08:27
Ho provato anche senza, ma mi dà errore lo stesso. Sono tutti e 3 campi interi. Ho provato tutte le combinazioni con e senza apici, ma niente.

Up!

LS1987
08-03-2012, 12:30
Ho provato anche senza, ma mi dà errore lo stesso. Sono tutti e 3 campi interi. Ho provato tutte le combinazioni con e senza apici, ma niente.

Up!

LS1987
09-03-2012, 17:13
Ho provato anche senza, ma mi dà errore lo stesso. Sono tutti e 3 campi interi. Ho provato tutte le combinazioni con e senza apici, ma niente.

Up!

Ballantine
09-03-2012, 17:43
Direi che, oltre a togliere gli apici agli interi, devi scrivere NULL al posto di null. Volendo puoi anche mettere il ";" alla fine della query, giusto per correttezza sintattica:

$queryString = "INSERT INTO c (IdConn, IdUser, IdUserDest) VALUES (NULL, $idUser1, $idUser2);";

LS1987
10-03-2012, 09:15
Direi che, oltre a togliere gli apici agli interi, devi scrivere NULL al posto di null. Volendo puoi anche mettere il ";" alla fine della query, giusto per correttezza sintattica:

$queryString = "INSERT INTO c (IdConn, IdUser, IdUserDest) VALUES (NULL, $idUser1, $idUser2);";

Era giusta, ma c'erano dei bug altrove.

biffuz
08-05-2012, 11:33
Ma l'hai risolto poi? Non vedo errori nella query, a parte il fatto che non servono né apici né tantomeno punti e virgola, l'unica cosa che mi viene in mente è qualche carattere non visibile. Comunque non concatenare direttamente le variabili nelle query, usa i prepared statement con mysqli o qualche libreria. O se proprio non vuoi, metti almeno un mysql_escape:

$query = "INSERT INTO pippo VALUES ('" . mysql_escape($valore) . "')"