Salve a tutti
ho creato un sito in locale e poi dopo averlo testa l'ho trasferito sul server ed ho avuto una brutta sorpresa... una parte di codice in locale viene interpretata in un modo, sul server in un altro!
Il bello è che sul server ho la versione 5.2.0-8+etch7 mentre in locale la 5.2.0... il che vorrebbe dire che sono pressochè identiche!
allor veniamo al codice, sto usando la classe PDO per fare un inserimento nel database:
Codice PHP:
//inserisce un utente nella newsletter
public function insert_newsletter($email,$cogn,$nom,$via,$citta,$cap,$prov)
{
$qry=$this->db->prepare('SELECT COUNT(*) n FROM newsletter_acf WHERE email=:email');
$qry->execute(array(':email'=>$email));
$ris=$qry->fetch(PDO::FETCH_ASSOC);
$qry="";
if ($ris['n']==0 )
{
$qry=$this->db->prepare('INSERT INTO newsletter_Acf VALUES (:email,:cogn,:nom,:via,:citta,:cap,:prov,0,:dt)');
//ecco la riga incriminata
$esito=$qry->execute(array(':email'=>$email,':cogn'=>$cogn,':nom'=>$nom,':via'=>$via,':citta'=>$citta,':cap'=>$cap,':prov'=>$prov,':dt'=>date('Ymd')));
//fine riga incriminata!
if ($esito )
$res[0]=true;
else
{
$res[0]=false;
$errdes=$qry->errorInfo();
$res[1]=$errdes[2];
}
}
else
{
$res[0]=false;
$res[1]='Email già registrata nella nostra newsletter';
}
return $res;
}
Il messaggio di errore è il seguente:
codice:
Fatal error: Call to a member function execute() on a non-object in /var/www/.../utility/db_use.php on line 177
e la riga 177 come ho già segnalato nel codice è questa:
$esito=$qry->execute(array(':email'=>$email,':cogn'=>$cogn,':n om'=>$nom,':via'=>$via,':citta'=>$citta,':cap'=>$c ap,'rov'=>$prov,':dt'=>date('Ymd')));
ed è abastanza inspiegabile dato che prima fa la prepare!!!
Fantascienza? è impazzito il server?
voi che ne pensate?