How to connect PHP with Microsoft Access database

后端 未结 6 557
感情败类
感情败类 2020-12-02 19:23

I am currently faced with a new challenge to develop a site using Microsoft Access as the primary database instead of mysql. I have not used MS Access before and I would lik

相关标签:
6条回答
  • 2020-12-02 19:55

    If you are just getting started with a new project then I would suggest that you use PDO instead of the old odbc_exec() approach. Here is a simple example:

    <?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";
    }
    

    NOTE: The above approach is sufficient if you do not need to support Unicode characters above U+00FF. If you do need to support such characters then neither PDO_ODBC nor the old odbc_ functions will work; you'll need to use the solution described in this answer.

    0 讨论(0)
  • 2020-12-02 19:56

    If you need to install then refer to:

    https://www.microsoft.com/en-us/download/details.aspx?id=54920

    0 讨论(0)
  • 2020-12-02 20:02
    <?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=;");
    

    A successful connection will allow SQL commands to be executed from PHP to read or write the database. If, however, you get the error message “PDOException Could not find driver” then it’s likely that the PDO ODBC driver is not installed. Use the phpinfo() function to check your installation for references to PDO.

    If an entry for PDO ODBC is not present, you will need to ensure your installation includes the PDO extension and ODBC drivers. To do so on Windows, uncomment the line extension=php_pdo_odbc.dll in php.ini, restart Apache, and then try to connect to the database again.

    With the driver installed, the output from phpinfo() should include information like this:https://www.diigo.com/item/image/5kc39/hdse

    0 讨论(0)
  • 2020-12-02 20:08

    Are you sure the odbc connector is well created ? if not check the step "Create an ODBC Connection" again

    EDIT: Connection without DSN from php.net

    // Microsoft Access

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

    in your case it might be if your filename is northwind and your file extension mdb:

    $connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=northwind", "", "");
    
    0 讨论(0)
  • 2020-12-02 20:14

    If you are struggling with the connection in the XAMPP environment I suggest uncommenting the following entry in the php.ini file.

    extension = odbc

    I received an error without it: Uncaught pdoexception: could not find driver

    0 讨论(0)
  • 2020-12-02 20:17

    The problem is a simple typo. You named your variable 'conc' on line 2 but then referenced 'conn' on line 4.

    0 讨论(0)
提交回复
热议问题