Rechercher : dans
Par :

Connection sur une b donnée Mysql via odbc

Dernière réponse le 24 mai 2006 à 19:32:54 silaso, le 22 nov 2003 à 08:01:35 
 Signaler ce message aux modérateurs

Bonjour à tous,
excuser moi de nous déranger. je n'arrive dans un sript php à me connecter sur une base de donnée Mysql.
je recoit le message suivant :

Warning: SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in e:\easyphp\www\portal_php4t\db_odbc.inc on line 35
Database error: Link-ID == false, odbc_pconnect failed
ODBC Error: 0 ()

j'ai besoin de l'aide s'il vous plait. le fichier db_odbc.inc est le suivant



class DB_Sql {
var $Host = "";
var $Database = "";
var $User = "";
var $Password = "";
var $UseODBCCursor = 0;

var $Link_ID = 0;
var $Query_ID = 0;
var $Record = array();
var $Row = 0;

var $Errno = 0;
var $Error = "";

var $Auto_Free = 0; ## set this to 1 to automatically free results

/* public: constructor */
function DB_Sql($query = "") {
$this->query($query);
}

function connect() {
if ( 0 == $this->Link_ID ) {
$this->Link_ID=odbc_pconnect($this->Database, $this->User, $this->Password, $this->UseODBCCursor);
if (!$this->Link_ID) {
$this->halt("Link-ID == false, odbc_pconnect failed");
}
}
}

function query($Query_String) {

/* No empty queries, please, since PHP4 chokes on them. */
if ($Query_String == "")
/* The empty query string is passed on from the constructor,
* when calling the class without a query, e.g. in situations
* like these: '$db = new DB_Sql_Subclass;'
*/
return 0;

$this->connect();

# printf("<br>Debug: query = %s<br>\n", $Query_String);

# rei@netone.com.br suggested that we use this instead of the odbc_exec().
# He is on NT, connecting to a Unix MySQL server with ODBC. -- KK
# $this->Query_ID = odbc_prepare($this->Link_ID,$Query_String);
# $this->Query_Ok = odbc_execute($this->Query_ID);

$this->Query_ID = odbc_exec($this->Link_ID,$Query_String);
$this->Row = 0;
odbc_binmode($this->Query_ID, 1);
odbc_longreadlen($this->Query_ID, 4096);

if (!$this->Query_ID) {
$this->Errno = 1;
$this->Error = "General Error (The ODBC interface cannot return detailed error messages).";
$this->halt("Invalid SQL: ".$Query_String);
}
return $this->Query_ID;
}

function next_record() {
$this->Record = array();
$stat = odbc_fetch_into($this->Query_ID, ++$this->Row, &$this->Record);
if (!$stat) {
if ($this->Auto_Free) {
odbc_free_result($this->Query_ID);
$this->Query_ID = 0;
};
} else {
// add to Record[<key>]
$count = odbc_num_fields($this->Query_ID);
for ($i=1; $i<=$count; $i++)
$this->Record[strtolower(odbc_field_name ($this->Query_ID, $i)) ] = $this->Record[ $i - 1 ];
}
return $stat;
}

function seek($pos) {
$this->Row = $pos;
}

function metadata($table) {
$count = 0;
$id = 0;
$res = array();

$this->connect();
$id = odbc_exec($this->Link_ID, "select * from $table");
if (!$id) {
$this->Errno = 1;
$this->Error = "General Error (The ODBC interface cannot return detailed error messages).";
$this->halt("Metadata query failed.");
}
$count = odbc_num_fields($id);

for ($i=1; $i<=$count; $i++) {
$res[$i]["table"] = $table;
$name = odbc_field_name ($id, $i);
$res[$i]["name"] = $name;
$res[$i]["type"] = odbc_field_type ($id, $name);
$res[$i]["len"] = 0; // can we determine the width of this column?
$res[$i]["flags"] = ""; // any optional flags to report?
}

odbc_free_result($id);
return $res;
}

function affected_rows() {
return odbc_num_rows($this->Query_ID);
}

function num_rows() {
# Many ODBC drivers don't support odbc_num_rows() on SELECT statements.
$num_rows = odbc_num_rows($this->Query_ID);
//printf ($num_rows."<br>");

# This is a workaround. It is intended to be ugly.
if ($num_rows < 0) {
$i=10;
while (odbc_fetch_row($this->Query_ID, $i))
$i*=10;

$j=0;
while ($i!=$j) {
$k= $j+intval(($i-$j)/2);
if (odbc_fetch_row($this->Query_ID, $k))
$j=$k;
else
$i=$k;
if (($i-$j)==1) {
if (odbc_fetch_row($this->Query_ID, $i))
$j=$i;
else
$i=$j;
};
//printf("$i $j $k <br>");
};
$num_rows=$i;
}

return $num_rows;
}

function num_fields() {
return count($this->Record)/2;
}

function nf() {
return $this->num_rows();
}

function np() {
print $this->num_rows();
}

function f($Field_Name) {
return $this->Record[strtolower($Field_Name)];
}

function p($Field_Name) {
print $this->f($Field_Name);
}

function halt($msg) {
printf("</td></tr></table><b>Database error:</b> %s<br>\n", $msg);
printf("<b>ODBC Error</b>: %s (%s)<br>\n",
$this->Errno,
$this->Error);
die("Session halted.");
}
}
?>

excusez moi une fois de plus pour la longueur et le dérangement

Meilleures réponses pour « connection sur une b donnée Mysql via odbc » dans :
Sauvegarde restauration base de données Mysql VoirL'article suivant va présenter la manière la plus facile pour sauvegarder et restaurer les bases de données Mysql. Sauvegarde Pour sauvegarder une base de données existante il est conseillé de créer un dump. Pour dumper toutes les bases de...
Administration de MySQL VoirLa base de données mysql Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...
Connexion à la base de données avec JDBC VoirConnexion à la base de données L'API (Application Programming Interface) JDBC, c'est-à-dire la bibliothèque de classes JDBC, se charge de trois étapes indispensables à la connexion à une base de données : la création d'une connexion à la...

1

wILFRIED, le 17 jui 2004 à 23:00:55

Bonjour !
comment se connecter avec une base doinnee ecrite en SQL server et java j'ai deja eu a appliquer multiples exemple je n'arrive pas a m'en sortir quelle driver utiliser

Répondre à wILFRIED

2

 Ohm-WorK, le 24 mai 2006 à 19:32:54
  • +1

Pourquoi te casser la tete avec un pilote ODBC, alors que PHP gère les connexions à une base de données, notament MySQL ?

La vie est une maladie mortelle, sexuellement transmissible ­(Woody Allen)

Répondre à Ohm-WorK
Collection CommentÇaMarche.net