insert con Sqlite e PHP

stellare21

Nuovo Utente
10 Lug 2008
20
1
3
ciao a tutti,
ho un problema nell'effettuare una insert con sqlite, in pratica ricevo questo errore:
"Errore SQLite: file is encrypted or is not a database"

non capisco il motivo il modo in cui apro la connessione al db è uguale a quello che ho scritto in un'altra pagina dove eseguo delle select che funzionano bene. Questo è il mio codice:


PHP:
$db = sqlite_open("App_Data/comsubin.db", 0666, $sqlite_error);

if(!$db) {
die("Errore SQLite: ".$sqlite_error);
}   
   $nick = htmlspecialchars($_POST['nick']);
$immagine = htmlspecialchars($_POST['immagine']);
$punti = (int)$_POST['punti'];
$id_obiettivo = (int)$_POST['id_ob'];
   
echo $nick;
echo $immagine;
echo $punti;
echo $id_obiettivo;

   $sql = "INSERT INTO partecipante (nick, immagine, punti, id_obiettivo) VALUES ('$nick', '$immagine', '$punti', '$id_obiettivo')";
   
$ok = sqlite_exec($db, $sql);
  
 if(!$ok) die("Query di insert non eseguita!");
   
sqlite_close($db);
Qualcuno può darmi qualche dritta e capire dove sbaglio?
 

PHPMan

Nuovo Utente
2 Feb 2015
17
2
0
ciao

il problema è molto semplice.

stai mettendo degli apici fra le variabili. Questi apici mandano a marcire il programma.

PHP:
('$nick', '$immagine', '$punti', '$id_obiettivo')
provoca bug il codice sopra.

Prova a cambiare il tutto così, usando set e non values:

PHP:
$sql = "INSERT INTO partecipante SET nick=$nick, immagine=$immagine, punti=$punti, id_obiettivo = $id_obiettivo";
Codice completo:

PHP:
$db = sqlite_open("App_Data/comsubin.db", 0666, $sqlite_error);

if(!$db) {
die("Errore SQLite: ".$sqlite_error);
}   
   $nick = htmlspecialchars($_POST['nick']);
$immagine = htmlspecialchars($_POST['immagine']);
$punti = (int)$_POST['punti'];
$id_obiettivo = (int)$_POST['id_ob'];
   
echo $nick;
echo $immagine;
echo $punti;
echo $id_obiettivo;

  $sql = "INSERT INTO partecipante SET nick=$nick, immagine=$immagine, punti=$punti, id_obiettivo=$id_obiettivo";
   
$ok = sqlite_exec($db, $sql);
  
 if(!$ok) die("Query di insert non eseguita!");
sqlite_close($db);
ciao.
 

stellare21

Nuovo Utente
10 Lug 2008
20
1
3
ah ecco!
Non è che se hai tempo potresti farmi un esempio con il mio caso? per capire come utilizzarlo grazie ciao!