Insertion d'un fichier dans une base oracle 8i via ODBC
Bonjour,
J'ai un petit code qui marche avec PHP en CGI sous Apache mais pas en mode module ...
Selon le driver utilisé, j'ai 52 ou 0 octet de stockée dans la base.
Si je suis en mode CGI j'ai bien l'image en entier....
Problème de configuration ?
Si quelqu'un a une idée ....
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
<?php
/**
CREATE TABLE TESTERIC.UPLOAD(
FICHIER VARCHAR2(50),
CONTENT BLOB)
*/
/**
* Test d'upload dans une table oracle via ODBC et PHP en module
*/
$conf['DB_dsn'] = 'DRIVER=ORACLE ODBC DRIVER;DBQ=BDDEV8I2;SERVER=BDDEV8I2;';
// $conf['DB_dsn'] = 'DRIVER={Microsoft ODBC for Oracle};SERVER=BDDEV8I2;';
$conf['DB_user'] = 'TESTERIC';
$conf['DB_pwd'] = 'TESTERIC';
$file = 'D:\DocumentsEric\Mes images\JamesDean.jpg';
$fsize = filesize($file)+10; //le +10 des fois que... mais sert a rien
ini_set('odbc.defaultlrl',$fsize); //sert à rien
ini_set('odbc.defaultbinmode',ODBC_BINMODE_PASSTHRU); //sert à rien
//$file = 'D:\DocumentsEric\lorem.txt';
//utilisation des fonctions direct ODBC
$db = odbc_connect($conf['DB_dsn'],$conf['DB_user'],$conf['DB_pwd']);
if($db===false){
die("ERREUR : odbc_connect<br/>\n");
}
// odbc_autocommit($db,false);//begintrans
$f = date('d/m/Y H:i:s');
$sql = 'INSERT INTO UPLOAD (FICHIER) VALUES(\''.$f.'\')';
echo "$sql<br />";
$rs = odbc_exec($db, $sql);
if($rs===false){
$error = 'INSERT :'."\n";
echo "$error<br/>\n";
}else{
$i = odbc_num_rows($rs);
echo "INSERT : ".$i." lignes affectée<br/>\n";
}
echo odbc_errormsg($db)."</br>\n";
//prepare
$sql = "UPDATE UPLOAD SET CONTENT = ? WHERE FICHIER = '$f' ";
echo "$sql<br />";
$prep_id = odbc_prepare($db, $sql);
echo odbc_errormsg($db)."</br>\n";
if(!$prep_id) echo "PREPARE: erreur<br/>\n";
echo odbc_errormsg($db)."</br>\n";
odbc_execute($prep_id,array("'".$file."'"));
echo odbc_errormsg($db)."</br>\n";
if(!$rs){
$error = 'UPDATE: erreur $rs='.print_r($rs,true)."\n";
echo "$error<br/>\n";
echo odbc_errormsg($db)."</br>\n";
}else{
echo "UPDATE: ok<br/>\n";
echo odbc_errormsg($db)."</br>\n";
}
odbc_close($db);
//commit
// if(!odbc_commit($db)) echo "COMMIT: erreur</br/>\n";
?> |