[PDO] insert che non inserisce e non da errori

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
63
Udine
www.stilisticamente.com
Ciao,
sto impazzendo ormai da giorni su una, apparentemente, semplice funzione che al passaggio di alcuni parametri dovrebbe registrare i dati su un database.
La funzione è questa
PHP:
function salvataggio($dati) {
		try {
			include_once '../bin/connessione.php';
			$dbh = connetti();
			$querySQL = 'INSERT INTO pagina ';
			$querySQL .= '(nome, visibile, creata, titolo_pagina, titolo_header, occhiello_header) ';
			$querySQL .= "VALUES (:nome, :visibile, :creata, :titolo_pagina, :titolo_header, :occhiello_header)";
			$sth = $dbh->prepare($querySQL);
				echo '<pre>'; var_dump($sth, $dati); echo '</pre>';
			$sth->bindValue(':nome', $dati['nuova_nome_pagina'], PDO::PARAM_STR);
			$sth->bindValue(':visibile', $dati['nuova_visibilita'], PDO::PARAM_INT);
			$sth->bindValue(':creata', $dati['nuova_creata']);
			$sth->bindValue(':titolo_pagina', $dati['nuova_titolo_pagina'], PDO::PARAM_STR);
			$sth->bindValue(':titolo_header', $dati['nuova_titolo_header'], PDO::PARAM_STR);
			$sth->bindValue(':occhiello_header', $dati['nuova_occhiello_header'], PDO::PARAM_STR);
			if (!$sth->execute()) {
				echo "PDO Error 1.1:\n";
				print_r($sth->errorInfo());
				exit;
			} else {
				echo 'Registrazione avvenuta con successo!';
			}
			unset($sth, $dati, $dbh);
		}
		catch (PDOException $e) {echo $e->getMessage();}
		catch (Exception $e) {echo $e->getMessage();}
	}	//	salvataggio()
quindi: la variabile $dati è un array che contiene i valori da inserire e viene passata dal form che serve a inserire i dati.
Come si vede nella funzione c'è anche un var_dump() che mostra sia la query che i valori passati e infatti il risultato è questo:
object(PDOStatement)#2 (1) {
["queryString"]=>
string(177) "INSERT INTO pagina (nome, visibile, creata, titolo_pagina, titolo_header, occhiello_header) VALUES (:nome, :visibile, :creata, :titolo_pagina, :titolo_header, :occhiello_header)"
}
array(6) {
["nuova_nome_pagina"]=>
string(5) "frfdf"
["nuova_visibilita"]=>
int(1)
["nuova_creata"]=>
string(10) "2014-10-22"
["nuova_titolo_pagina"]=>
string(7) "fdasfaf"
["nuova_titolo_header"]=>
string(7) "asdfsdf"
["nuova_occhiello_header"]=>
string(6) "dsafdf"
}

Registrazione avvenuta con successo!
( l'icona che si vede ovviamente è un problema del forum e non dello script :D )
Dunque la funzione non torna nessun errore, e la "Registrazione avvenuta con successo!" non avviene affatto, il database non ha record.
Io francamente sto per arruolarmi nella legione straniera :skull:
 
ho creato la tabella con "datetime" perché così vuole MSsql che ho installato,
ho ripreso il tuo script, inserito i parametri del DB
PHP:
    $dbh = new PDO('sqlsrv:Server=*****;Database=testDB', '*****', '*****');
inserito l'array con i valori del var_dump
eseguito ed il record è nel db

controlla che non ci siano incompatibilità del driver pdo del db che usi (mysql ?) con le operazioni,
per farmi capire pdo x mssql non gestisce "inTransaction"

posso anche suggerirti di controllare il nome del db ... magari lo scrivi nel db operativo e guardi nel db di test (scusami)
ciao
Marino
 

Discussioni simili