PDA

View Full Version : Trasferimento ODBC in MySql


SergioL68
04-07-2005, 03:14
Un loop di lettura dati sull'ODBC, dopo la lettursa l'inserimento nel MySql.
Trasferisco i dati da un DB Access ad un DB MySql quando improvvisamente dopo un 10 o 20 record trasferiti il tutto si blocca con errore del MySql, non riesce a fare la query.
Il DB non contiene nessun carattere particolare che potrebbe mandare in errore l'esecuzione PHP.
Non ne trovo il motivo, any ideas ?

Allego il codice per i curiosi.

<?
include './admin/cookies.php' ;
include './admin/header.php' ;

function Error_Handler( $msg, $cnx )
{
echo "$msg \n";
// in case of persistent connexion, it is important to close it before exiting.
odbc_close( $cnx);
exit();
}
// create an ODBC connection, returned in $cnx
$cnx = odbc_pconnect($databaseodbc, $userodbc, $passodbc );
// To avoid permission troubles in the test, you may want to use a superadmin access :
// $cnx = odbc_connect( 'Muscle' , [sa login] , [sa password] );

if( ! $cnx ) {
Error_handler( "Error in odbc_connect" , $cnx );
}
if ($ordine) {
$ordine=$ordine;
} else {
$ordine="Prodotto";
}
// echo"Ordine: $ordine ";
$dittas="Ast";
$quera="select Puntatore,qt,codice,Disponibilita,Prodotto,Categoria,Categoria2,Marca,Gusto,Formato,Pagato,Scontoditta,Prezzo,Sconto1,Sconto2,Sconto3,Offerta,Foto,Ingredienti,Ingredienti2,Descrizione,Flagofferte,Uso,Novita from Prodotti where Marca= '$dittas' order by $ordine ";
$cur= odbc_exec( $cnx, $quera );
if( ! $cur ) {
Error_handler( "Error in odbc_exec( Errore Cursore nel ODBC ) " , $cnx );
}
$nbrow=0;

while( odbc_fetch_row( $cur ) )
{
$nbrow++;
$Puntatore= odbc_result( $cur, 1 );
$qt= odbc_result( $cur, 2 );
$codice= odbc_result( $cur, 3 );
$dispo= odbc_result( $cur, 4 );
$Prodotto= odbc_result( $cur, 5 );
$Categoria= odbc_result( $cur, 6 );
$Categoria2= odbc_result( $cur, 7 );
$Marca= odbc_result( $cur, 8 );
$Gusto=odbc_result( $cur, 9 );
$for=odbc_result( $cur, 10 );
$Pagato=odbc_result( $cur, 11 );
$Scontoditta=odbc_result( $cur, 12 );
$Prezzo=odbc_result( $cur, 13 );
$Sconto1=odbc_result( $cur, 14 );
$Sconto2=odbc_result( $cur, 15 );
$Sconto3=odbc_result( $cur, 16 );
$Offerta=odbc_result( $cur, 17 );
$Foto=odbc_result( $cur, 18 );
$Ingredienti=odbc_result( $cur, 19 );
$Ingredienti2=odbc_result( $cur, 20 );
$Descrizione=odbc_result( $cur, 21 );
$Flagofferte=odbc_result( $cur, 22 );
$Uso=odbc_result( $cur, 23 );
$Novita=odbc_result( $cur, 24 );

echo"$Puntatore.$qt.$codice.$dispo.$Prodotto.$Categoria.$Categoria2.$Marca.$Gusto.$for.$Pagato.$Scontoditta.$Prezzo.$Sconto1.$Sconto2.$Sconto3.$Offerta.$Foto.$Ingredienti.$Ingredienti2.$Descrizione.$Flagofferte.$Uso.$Novita \n";
// -----Mette nel MYSQL ------------------

$db = mysql_connect("$mysqlhost","$mysqluser","$mysqlpass") or die ("Non posso connettermi al server!");
mysql_select_db("Muscle",$db) or die ("Non posso selezionare il database!") ;
$sql = "INSERT INTO prodotti (qt,codice,Disponibilita,Prodotto,Categoria,Categoria2,Marca,Gusto,Formato,Pagato,Scontoditta,Prezzo,Sconto1,Sconto2,Sconto3,Offerta,Foto,Ingredienti,Ingredienti2,Descrizione,Flagofferte,Uso,Novita) VALUES ('$qt','$codice','$dispo','$Prodotto','$Categoria','$Categoria2','$Marca','$Gusto','$for','$Pagato','$Scontoditta','$Prezzo','$Sconto1','$Sconto2','$Sconto3','$Offerta','$Foto','$Ingredienti','$Ingredienti2','$Descrizione','$Flagofferte','$Uso','$Novita')";
$result = mysql_query($sql,$db)or die ("Non posso inserire il record nel MyEsseQuello!");

mysql_close();
// -----------Mette nel MYSQL-------------------



}


odbc_close( $cnx);

include './admin/footer.php' ;


?>

SergioL68
04-07-2005, 13:24
Trovato, un apice nella parola "d'acqua" rompeva le query, chi si ricorda la funzione per isolare gli apici in PHP ?

Hard2hacK
04-07-2005, 14:46
per non fare contare gli apici in php basta mettere uno slash prima dell'apice
es:
sql='dentro il lago c'č acqua';
non funziona

sql='dentro il lago c\'č acqua';

cosė dovrebbe funzionare... :D

SergioL68
04-07-2005, 14:51
per non fare contare gli apici in php basta mettere uno slash prima dell'apice
es:
sql='dentro il lago c'č acqua';
non funziona

sql='dentro il lago c\'č acqua';

cosė dovrebbe funzionare... :D

Si lo so, solo che qui parliamo di una varibile per cui bisogna farlo con la sua apposita funzione che ho appena ritrovato, addslashes()
Pių tardi provo.

SergioL68
05-07-2005, 03:36
Fatto, ora sono passato a MySql e tutto funziona, anche gli apici che prima facevano impazzire il data base Access :Prrr: