Salve a tutti, come mi e' stato suggerito sto' cercando di utilizzare PDO al posto di MYSQL.
Dopo lungo lavoro sono riuscito a scrivere questo codice :
<PHP>
<?php
try {
$db = new PDO('mysql:host=localhost;dbname=xxxx;charset=utf8 mb4',"root", ""); }
catch (PDOException $EXCEPTIONS) {
echo $EXCEPTIONS->getMessage(); }
try {
$db->setAttribute (PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); }
catch (PDOException $EXCEPTIONS) {
echo $EXCEPTIONS->getMessage(); }
$email="roma@libero.it";
try {
$stmt= $db->prepare("Select * FROM anagrafe WHERE anaEmai=:anaEmai"); }
catch (PDOException $EXCEPTIONS) {
echo $EXCEPTIONS->getMessage(); }
try {
$stmt->bindvalue(':anaEmai', $email, PDO::PARAM_STR); }
catch (PDOException $EXCEPTIONS) {
echo $EXCEPTIONS->getMessage(); }
try {
$stmt->execute();
} catch (PDOException $EXCEPTIONS) {
echo $EXCEPTIONS->getMessage(); }
$righe=$stmt->rowCount();
echo "righe " . $righe;
unset($db);
?>
</PHP>
Funziona bene, pero' riscontro una anomalia, se modifico la query :
"Select * FROM anagrafe WHERE anaEmai=:anaEmai"
in "Select * anagrafe WHERE anaEmai=:anaEmai"
il gestore degli errori interviene solo sulla riga di execute e non in PREPARE e
BIND, questo sebbene anche questi comandi dovrebbero generare (letto dal manuale)
errori.
Ho provato anche a controllare se tornano FALSE, possibilita' sempre prevista dal
manuale, ma neppure questo funziona.
E' vero che posso utilizzare il codice cosi' come e', magari eliminando i TRY/CATCH su PREPARE
e BIND che sono inutili, ma mi piacerebbe capire perche' ho questo risultato.
Spero qualcuno sia in grado di darmi un suggerimento.
Grazie.
p.s. dico lungo lavoro perche' oltre a scrivere il codice (aiutato da web) ho cercato di capirlo, cosa per me non proprio semplicissima.