web-dev-qa-db-fra.com

Comment se connecter PHP avec la base de données Microsoft Access

Je suis actuellement confronté à un nouveau défi pour développer un site utilisant Microsoft Access comme base de données principale au lieu de mysql. Je n'ai jamais utilisé MS Access auparavant et j'aimerais savoir comment s'y prendre, j'ai consulté le site Web du W3C sur W3schools mais le code donne une erreur

Avertissement: odbc_connect () [function.odbc-connect]: erreur SQL: [Microsoft] [ODBC Driver Manager] Nom de la source de données introuvable et aucun pilote par défaut spécifié, état SQL IM002 dans SQLConnect dans C:\Users\NNALI\Desktop\root\test.php sur la ligne 2

et cette erreur

Avertissement: odbc_exec () s'attend à ce que le paramètre 1 soit une ressource, un booléen donné dans C:\Users\NNALI\Desktop\Breweries\root\test.php à la ligne 4

Je suis coincé et je ne sais pas quoi faire, j'apprécierais toute aide à ce sujet.

<?php
    $conc = odbc_connect("northwind", "","");
    $sql  = "Select * From customers";
    $rs   = odbc_exec($conn, $sql);
?>

Ci-dessus est le code que j'ai utilisé

11
user2503040

Si vous venez de commencer avec un nouveau projet, je vous suggère d'utiliser PDO à la place de l'ancienne approche odbc_exec(). Voici un exemple simple:

<?php
$bits = 8 * PHP_INT_SIZE;
echo "(Info: This script is running as $bits-bit.)\r\n\r\n";

$connStr = 
        'odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};' .
        'Dbq=C:\\Users\\Gord\\Desktop\\foo.accdb;';

$dbh = new PDO($connStr);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 
        "SELECT AgentName FROM Agents " .
        "WHERE ID < ? AND AgentName <> ?";
$sth = $dbh->prepare($sql);

// query parameter value(s)
$params = array(
        5,
        'Homer'
        );

$sth->execute($params);

while ($row = $sth->fetch()) {
    echo $row['AgentName'] . "\r\n";
}
9
Gord Thompson

Le problème est une simple faute de frappe. Vous avez nommé votre variable "conc" à la ligne 2, mais avez ensuite référencé "conn" à la ligne 4.

4
Joel Ginsberg
<?php
    $dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb";
    if (!file_exists($dbName)) {
       die("Could not find database file.");
    }
    $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");

Une connexion réussie permettra aux commandes SQL d'être exécutées à partir de PHP pour lire ou écrire la base de données. Si, cependant, vous obtenez le message d'erreur "PDOException Impossible de trouver le pilote" alors il est probable que le PDO ODBC n'est pas installé. Utilisez la fonction phpinfo () pour vérifier votre installation pour les références à PDO.

Si une entrée pour PDO ODBC n'est pas présente, vous devrez vous assurer que votre installation inclut l'extension PDO et les pilotes ODBC. Pour ce faire sous Windows, décommentez l'extension de ligne = php_pdo_odbc.dll dans php.ini, redémarrez Apache, puis essayez de vous reconnecter à la base de données.

Avec le pilote installé, la sortie de phpinfo () devrait inclure des informations comme celle-ci: https://www.diigo.com/item/image/5kc39/hdse

http://i.stack.imgur.com/Zwp2W.png

3
Aman Maurya

Êtes-vous sûr que le connecteur ODBC est bien créé? sinon, vérifiez à nouveau l'étape " Créez une connexion ODBC ")

[~ # ~] modifier [~ # ~] : Connexion sans DSN depuis php.net

// Microsoft Access

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

dans votre cas, cela pourrait être si votre nom de fichier est northwind et votre extension de fichier mdb:

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=northwind", "", "");
2
MSR