Ciao,
sto provando a creare la prima applicazione che si collega al database. Sto seguendo la guida postata qua sul sito html.it (php + mysql)
Quando accedo alla pagina che riceve i dati tramite POST e dovrebbe inserirli nel database, mi restituice il seguente 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 'TO libreria (autore,titolo,pagine,genere) VALUES ("coelho","paulo","1' at line 1
Una cosa che ho notato, è che la query sembra troncata. Finisce con un 1 (quando il numero aveva più cifre), manca il resto della query (l'altro campo chiuse virgolette e parentesi).
copio il codice copiato dalla guida, che sto usando io
Questo è il file che descrive la classe, al cui interno ci sono le funzioni (io per ora chiamo la funzione "inserisci")
Codice PHP:
<?php
class MysqlClass
{
// parametri per la connessione al database
private $nomehost = "localhost";
private $nomeuser = "***";
private $password = "***";
private $nomedb = "***";
// controllo sulle connessioni attive
private $attiva = false;
// funzione per la connessione a MySQL
public function connetti()
{
if(!$this->attiva)
{
if($connessione = mysql_connect($this->nomehost, $this->nomeuser, $this->password) or die (mysql_error()))
{
// selezione del database
$selezione = mysql_select_db($this->nomedb,$connessione) or die (mysql_error());
}
}
else {
return true;
}
}
// funzione per la chiusura della connessione
public function disconnetti()
{
if($this->attiva)
{
if(mysql_close())
{
$this->attiva = false;
return true;
}
else {
return false;
}
}
}
// funzione per l'esecuzione delle query
public function query($sql)
{
if(isset($this->attiva))
{
$sql = mysql_query($sql) or die (mysql_error());
return $sql;
}
else {
return false;
}
}
// funzione per l'inserimento dei dati in una tabella
// $t: il nome della tabella in cui effettuare l'inserimento
// $v: i valori da inserire
// $r: i campi da popolare tramite i valori specificati dall'argomento precedente
public function inserisci($t,$v,$r = null)
{
if(isset($this->attiva))
{
$istruzione = 'INSERT TO '.$t;
if($r != null)
{
$istruzione .= ' ('.$r.')';
}
for($i = 0; $i < count($v); $i++)
{
if(is_string($v[$i]))
{
$v[$i] = '"'.$v[$i].'"';
}
}
$v = implode(',',$v);
$istruzione .= ' VALUES ('.$v.')';
$query = mysql_query($istruzione) or die (mysql_error());
}
else {
return false;
}
}
// funzione per l'estrazione dei record
public function estrai($risultato)
{
if(isset($this->attiva))
{
$r = mysql_fetch_object($risultato);
return $r;
}
else {
return false;
}
}
}
?>
In una pagina php, utilizzo tale funzione della classe
Codice PHP:
<?php
// inclusione del file contenente la classe
include "funzioni_mysql.php";
// istanza della classe
$data = new MysqlClass();
// connessione a MySQL
$data->connetti();
// definizione delle variabili da passare alla funzione per l'inserimento dei dati
$t = "libreria"; // nome della tabella
$v = array ($_POST['autore'], $_POST['titolo'], $_POST['pagine'], $_POST['genere']); // valori da inserire
$r = "autore,titolo,pagine,genere"; // campi da riempire
// chiamata alla funzione per l'inserimento dei dati
$data->inserisci($t,$v,$r);
// disconnessione
$data->disconnetti;
?>
Da cosa può essere dovuto?
Grazie!