Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 连接到数据库时发生PDO错误_Php_Mysql_Pdo - Fatal编程技术网

Php 连接到数据库时发生PDO错误

Php 连接到数据库时发生PDO错误,php,mysql,pdo,Php,Mysql,Pdo,我一直在使用相同的代码,现在有了这个新项目,我无法让它连接到我的数据库。它与旧服务器在同一台服务器上运行 事实上,我甚至从一个旧项目复制并粘贴了这个信息到我的新项目中,替换了密码和用户名字段以匹配这个项目,但它不起作用 代码是: <?php $host = 'localhost'; $dbname = ''; $user = ''; $pass = ''; $db = new PDO('mysql:host='.$host.';dbname

我一直在使用相同的代码,现在有了这个新项目,我无法让它连接到我的数据库。它与旧服务器在同一台服务器上运行

事实上,我甚至从一个旧项目复制并粘贴了这个信息到我的新项目中,替换了密码和用户名字段以匹配这个项目,但它不起作用

代码是:

<?php

    $host = 'localhost';

    $dbname = '';

    $user = '';

    $pass = '';

    $db = new PDO('mysql:host='.$host.';dbname='.$dbname.'', $user, $pass);

?>
这会有什么不同?我不明白。它与其他项目位于同一根目录中,只是在一个不同的文件夹中

--root
   -- project 1
   -- project 2 

错误可能在数据库名称中。 您可以不使用数据库名称创建PDO。下面的代码列出了数据库

try{
$dsn = "mysql:host=localhost";
$dbh = new PDO($dsn, $user, $pass);
$stmt ="SHOW DATABASES";
foreach($dbh->query($stmt) as $row){
    echo $row['Database'];
    echo"<br>";
    }
}  
catch(PDOException $e) {  
    echo  $e->getMessage() ;
}  
试试看{
$dsn=“mysql:host=localhost”;
$dbh=新PDO($dsn,$user,$pass);
$stmt=“显示数据库”;
foreach($dbh->query($stmt)作为$row){
echo$row['Database'];
回声“
”; } } 渔获量{ echo$e->getMessage(); }

PS检查名称中的前导空格

基于此示例
$db=new PDO(“mysql:host=localhost;dbname=$dbname”,$username,$password)我认为你的报价可能不正确。如果@Fred ii-所说的不起作用,试试这个:首先,我建议使用127.0.0.1作为主机。使用PDO已被证明比localhost更高效。其次,请不要让$dbname为空,而是提供一个dbname。此外,如果可能,请删除$dbname结尾处的“
”,这似乎不相关,可能会导致问题。这两个参数的结果相同….@kfirba-显然,出于某种原因,上面的参数为空。在实际代码中,它们被填充。不向世界提供我的数据库连接凭据!
try{
$dsn = "mysql:host=localhost";
$dbh = new PDO($dsn, $user, $pass);
$stmt ="SHOW DATABASES";
foreach($dbh->query($stmt) as $row){
    echo $row['Database'];
    echo"<br>";
    }
}  
catch(PDOException $e) {  
    echo  $e->getMessage() ;
}