【问题标题】:Error thrown when connecting to SQL database in PHP在 PHP 中连接 SQL 数据库时抛出错误
【发布时间】:2017-02-23 19:43:20
【问题描述】:

我正在尝试使用 PDO 连接到数据库“customers.sql”。代码如下:

<?php
  $servername = "localhost";
  $username = "root";
  $password = "";

  try {
    $conn = new PDO("mysql:host=$servername;dbname=customers.sql", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
  }

  catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
?>

这是我的文件夹结构:

-WebPage
  -index.php
  -customers.sql        << this is the database >>

我正在运行 WAMP 服务器。服务器名称是“localhost”,用户名是“root”,没有密码,即密码是“”。服务器返回:

连接失败:SQLSTATE[HY000] [1049] 未知数据库“customers.sql”。

请大家指出我的错误。提前致谢。

编辑

这是“customers.sql”中的代码:

SET IDENTITY_INSERT Customer ON
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(1,'Maria','Anders','Berlin','Germany','030-0074321')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(2,'Ana','Trujillo','México D.F.','Mexico','(5) 555-4729')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(3,'Antonio','Moreno','México D.F.','Mexico','(5) 555-3932')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(4,'Thomas','Hardy','London','UK','(171) 555-7788')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(5,'Christina','Berglund','Luleå','Sweden','0921-12 34 65')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(6,'Hanna','Moos','Mannheim','Germany','0621-08460')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(7,'Frédérique','Citeaux','Strasbourg','France','88.60.15.31')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(8,'Martín','Sommer','Madrid','Spain','(91) 555 22 82')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(9,'Laurence','Lebihan','Marseille','France','91.24.45.40')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(10,'Elizabeth','Lincoln','Tsawassen','Canada','(604) 555-4729')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(11,'Victoria','Ashworth','London','UK','(171) 555-1212')
INSERT INTO [Customer] ([Id],[FirstName],[LastName],[City],[Country],[Phone])VALUES(12,'Patricio','Simpson','Buenos Aires','Argentina','(1) 135-5555')
...

【问题讨论】:

  • 从名称中删除 .sql
  • 是否有名为customers.sql的数据库?
  • 您似乎正在尝试将文件用作数据库,但这是行不通的。

标签: php mysql database


【解决方案1】:

有些混乱。

您说您正在使用 wamp,并且您的代码表明您正在尝试连接到 mysql 数据库。

.sql 文件不是数据库。它只包含 sql 语句。它可能包含创建和填充数据库所需的所有语句。但当然,这只是在我们知道文件内容之前的推测。

如果你按照你的说法安装了 wamp,那么你就有一个正在运行的 mysql 服务器。您必须针对服务器执行 .sql 文件才能创建数据库。最简单的方法是使用 wamp 附带的 phpmyadmin。您应该可以通过http://localhost/phpmyadmin 访问它。

我希望这会有所帮助。当然,您必须先阅读一些有关 mysql 服务器的文章,然后才能彻底理解这一切。学习愉快。

【讨论】:

    【解决方案2】:

    如果您的数据库名为“customers”,请删除 .sql。

    否则,您是否尝试使用名为customers.sql 的文件?那是做不到的。该语句是建立与数据库的连接。

    【讨论】:

      【解决方案3】:

      这真的是文件系统文件吗?如果是这样,您确定格式不是sqlite 而不是mysql

      如何使用打开数据库文件

      $conn = new PDO('sqlite:customers.sqlite');
      

      【讨论】:

        【解决方案4】:

        customers.sql 不是表,因此您不需要 .sql。我通常用这个:

        $conn = new mysqli($servername, $username, $password);
        $conn->query('use customers');
        

        文档:http://php.net/manual/en/book.mysqli.php

        【讨论】:

          猜你喜欢
          • 2022-11-20
          • 1970-01-01
          • 2018-11-30
          • 1970-01-01
          • 2013-07-17
          • 2021-01-05
          • 2017-12-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多