Fatal error: Uncaught exception 'PDOException'

  • Creatore Discussione Creatore Discussione Gae58
  • Data di inizio Data di inizio

Gae58

Utente Attivo
26 Mar 2012
84
0
0
salve,

mi trovo in difficoltà, ho creato delle pagine in php e localmente con PHPMyAdmin mi funziona tutto bene.
Posto il tutto sul sito, server Linux e solo per alcune pagine mi ritornano errori che non mi fanno proseguire, lo stesso quando effettuo la ricerca, non trova il dato anche se presente.
Inizialmente pensavo dipendesse dall'uso del PDO, in quanto togliendolo da una funzione mi ritorna il dato, però se fosse vero, dovrebbe ritornarmi l'errore in tutte le pagine, ma ciò non succede.

Qualche consiglio?

grazie

gaetano
 
Quando apro la pagina l'errore è questo:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2053 '
Da tene presente che le pagine sono tutte uguali come codice

L'errore è sul richiamo della seconda riga (uso il PDO)
$cQry = cQuery( $Conn, $cSql, $aPara );
while ($Campo = $cQry->fetch()) {

Le versioni di PHP e di MySql sono diverse
 
Ho riscritto una parte della pagina ed adesso funziona tutto bene,

Però rimane il problema sul ritorno del valore da una funzione:

Dalla pagina richiamo una funzione per sapere da quante righe totali è composta la tabella (per poter calcolare il N° di pagine)
$RigheTo = RigheTo( 'AssegnazioniTipo');

questa la funzione:
Function RigheTo( $Tab ) {
$nRet = 0;
$cSql = "SELECT * FROM ".$Tab;
$Conn = Connetti( $PDO );
$cQry = null;
$cQry = cQuery( $Conn, $cSql, $aPara );
$nRet = $cQry->rowCount();
Disconnetti( $PDO, $Conn );
return $nRet;
}

$nRet mi dovrebbe restituire il numero delle righe, ma mi ritorna zero senza indicarmi l'errore.
Il cQuery richiama l'execute

grazie
 
ciao
due cose:
1. quando scrivi del codice usa i tag adeguati (formattiazione post, II° riga, ultime tre iconcine, nell'ordine CODE HTML PHP)
2. da dove salta fuori la variabile $aPara? cioè dove la valorizzi?
 
scusami hai ragione è la seconda volta che mi capita.

$aPara è l'array che valorizzo quando devo passare i dati per l'INS o la Variazione

In questo caso con la select la setto a null ad inizio pagina.

Mi hai fatto sorgere un dubbio quando in una pagina web uso il require per il caricamente della pagina, legge le var ad inizio pagina o serve solo per richiamare le func che ho all'interno?

Però non mi ritorna nemmeno il warning per indicarmi che $aPara non é stata dichiarata
 
ciao
non me ne intendo molto di pdo, però tu scrivi una function (la effe minuscola !!) ora le variabili estrerne alla function non sono conosciute al suo interno e viceversa (tranne che non siano globali)
es
PHP:
<?php
function somma($a){
	$somma=$a+$b;
}
$b=9999;
echo somma(5);//output 5 se non errore di variabile indefinita alla riga 3
echo $somma; //output NULL
?>
 
scusami con return non mi dovrebbe riportare il valore di :
PHP:
$nRet = $cQry->rowCount();
é
PHP:
$cQry->rowCount()
che non riconosce

se invece uso:
PHP:
$dB = DbScelta( 'dgt', $Conn );
$cQry =  mysql_query( $cSql );
$nRet = mysql_num_rows($cQry);

mi ritorna il valore giusto

è qui che non capisco
 
ciao
ribadisco, secondo me l'errore non è in $nRet = $cQry->rowCount(); ma allariga
$cQry = cQuery( $Conn, $cSql, $aPara ); in cui la variabile $aPara non è definita
prova a mettere

PHP:
<?php
function RigheTo( $Tab ) {
	$nRet = 0;
	$cSql = "SELECT * FROM ".$Tab;
	$Conn = Connetti( $PDO );
	$cQry = null;
	var_dump($aPara);
	$cQry = cQuery( $Conn, $cSql, $aPara );
	$nRet = $cQry->rowCount();
	Disconnetti( $PDO, $Conn );
	return $nRet;
}
?>
e posta cosa riporta (secondo me NULL), del resto se usi l'altro sistema (done non utilizzi qualla variabile) funziona

p.s.
ricordati di racchiudere il codice negli appaositi tag, si legge meglio
 
si hai ragione, na dev'essere null in quanto parametri non ne passo.

Mi sa che devo calcolare il numero delle righe senza PDO.

Però questo è un problema in quanto devo cambiare molte righe di codice perchè nell'importazione faccio la ricerca del dato col PDO

QUalche altro suggerimento?

grazie

Gaetano
 
ciao
non so potresti provare così se puoi
PHP:
<?php
function RigheTo( $Tab,  $aPara) {
	$nRet = 0;
	$cSql = "SELECT * FROM ".$Tab;
	$Conn = Connetti( $PDO );
	$cQry = null;
	$cQry = cQuery( $Conn, $cSql, $aPara );
	$nRet = $cQry->rowCount();
	Disconnetti( $PDO, $Conn );
	return $nRet;
}
?>
oppure visto che la function ti serve solo per avere il numero di record

PHP:
<?php
function RigheTo( $Tab) {

	$cSql = mysql_query("SELECT * FROM ".$Ta;

	return mysql_num_rows($cSql);
}
?>
poi dopo puoi usare le pdo
 

Discussioni simili