如何通过从mysql/phpmyadmin导出为mydatabase.sql的php/pdo连接到sql数据库?

如何通过从mysql/phpmyadmin导出为mydatabase.sql的php/pdo连接到sql数据库?,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我在许多不同的网站上搜索过,但找不到具体回答此问题的答案: 我已经安装了WAMP服务器,它安装了phpmyadmin和MySQL。通过使用localhost作为主机名,我可以轻松地通过php/pdo连接到数据库 但我的问题是,我正试图连接到一个从phpmyadmin导出为“mydatabase.sql”的数据库。现在让我们假设我把这个文件放在我的电脑上的“C:\Users\Username\Desktop\MyFolder\mydatabase.sql”。如何连接到此数据库(如果可能) 原因是我

我在许多不同的网站上搜索过,但找不到具体回答此问题的答案:

我已经安装了WAMP服务器,它安装了phpmyadmin和MySQL。通过使用localhost作为主机名,我可以轻松地通过php/pdo连接到数据库

但我的问题是,我正试图连接到一个从phpmyadmin导出为“mydatabase.sql”的数据库。现在让我们假设我把这个文件放在我的电脑上的“C:\Users\Username\Desktop\MyFolder\mydatabase.sql”。如何连接到此数据库(如果可能)

原因是我无法在所有使用此程序的PC上安装WAMP服务器。所以希望能够连接到数据库而不必安装任何类型的服务器等

目前我的php是:

<?php
$dsn='mysql:C:\Users\Username\Desktop\MyFolder\mydatabase.sql';
$username='username';
$password='pass';

try 
{
    $dbh = new PDO("$dsn",$username,$password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'Connected to Database<br/>';

    $sql = "SELECT * FROM users";
    foreach ($dbh->query($sql) as $row)
    {
        echo $row["ID"] ." - ". $row["Name"] ."<br/>";
    }

    $dbh = null;
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
?>
我得到: “已连接到数据库 SQLSTATE[HY000]:一般错误:26文件已加密或不是数据库“

但我认为这是因为SQLite使用的数据库格式与MySQL不同(有待更正)。所以我需要的是类似于MySQL的SQLite驱动程序的东西


提前谢谢

您无法找到答案,因为它不存在:通过PDO连接到SQL转储是不可能的,而且毫无意义:转储不是一个数据库,而只是一组插入查询。与sqlite不同,mysql需要一台服务器来连接


为了能够连接,您应该首先将该转储导入mysql数据库,然后使用PDO连接到该数据库。

因此,如果该数据库位于另一台电脑上,而不是我在其上创建并测试它的电脑上,我需要在该电脑上安装WAMP或其他什么?我极力避免这种情况,因为我无法在我最终希望数据库驻留的pc上安装任何类型的数据库服务器软件。谢谢。引用的不是我的话,但没关系。被接受的回答是“要么使用sqlite而不是mysql,要么就必须安装mysql”,这对我帮助很大。我将我的sql转储文件转换为SQLite db文件,并完全按照我的要求进行连接。@RAlexander通常情况下,这种情况会涉及一个数据库服务器,一个运行数据库的主服务器,客户端计算机会通过网络连接到该服务器以操作数据。这就是数据库服务器的美妙之处;服务器设计用于同时处理多个客户端,您可以通过多个客户端保持所有数据的同步。@Isaac谢谢。我明白这一点,是的,我了解数据库服务器的好处以及所有这些,因为我以前曾与他们合作过。然而,在这个特定的例子中,我需要一个与MicrosoftAccess文件非常相似的数据库文件。我只需要SQL格式而不是mdb。这是mysql不提供的。所以,我最终使用了sqlite,我一点都不喜欢它。但至少这让我接近我想要的。
$dsn='sqlite:C:\Users\Optique\Desktop\optique.sql';