在PHP中连接到SQL数据库时引发的错误

时间:2017-02-23 19:43:21

标签: php mysql database

我正在尝试连接数据库" customers.sql"使用PDO。这是代码:

<?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服务器。服务器名称为&#34; localhost&#34;,用户名为&#34; root&#34;并且没有密码,即密码是&#34;&#34;。服务器返回:

  

连接失败:SQLSTATE [HY000] [1049]未知数据库&#39; customers.sql&#39;。

有人请指出我的错误。提前谢谢。

修改

以下是&#34; customers.sql&#34;中的代码:

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')
...

4 个答案:

答案 0 :(得分:2)

有一些混乱。

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

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

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

我希望这会有所帮助。当然,在你完全理解这一切之前,你必须阅读一些关于mysql服务器的文章。玩得开心学习。

答案 1 :(得分:1)

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

否则您是否尝试使用名为customers.sql的文件?那是不可能做到的。该声明用于建立与数据库的连接。

答案 2 :(得分:1)

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

如何使用

打开数据库文件
$conn = new PDO('sqlite:customers.sqlite');

答案 3 :(得分:1)

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

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

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