PHP即使连接也无法选择数据库

Posted

技术标签:

【中文标题】PHP即使连接也无法选择数据库【英文标题】:PHP cannot select database even though connected 【发布时间】:2017-12-20 06:01:19 【问题描述】:

刚刚安装了 MAMP,正在学习 php 并连接到我的数据库。我似乎可以连接到 mysql 但无法连接或在 phpMyAdmin 中查看任何数据库。

这是我的 php 代码:

<?php

$user = 'root';
$password = 'root'; 
$db = 'test';
$host = 'localhost';

$link = mysqli_connect($host, $user, $password);

//newly editied
if ($link->connect_error) 
    die('Connect Error (' . $mysqli->connect_errno . ') '
        . $mysqli->connect_error);


$db_selected = mysqli_select_db($db, $link);

if (!$db_selected) 
   echo "did not connect";

?>

当我运行它时,我会得到“好”字样,所以我知道我正在连接,然后是“未连接”,所以它没有连接到我的数据库。

我也尝试添加此代码,即使我创建了多个数据库,也没有任何响应。

$res = mysqli_query("SHOW DATABASES");

while ($row = mysqli_fetch_assoc($res)) 
    echo $row['Database'] . "\n";

感谢任何帮助!

【问题讨论】:

【参考方案1】:

检查连接状态时你错了。

你使用:

if ($link) 
    echo "good";

并且应该使用:

if ($link->connect_error) 
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);

根据PHP documentation,mysqli_connect() 将始终返回一个对象,因此它永远不会是false

您还在 DB 选择上反转了参数 $db$link,并考虑到您之前的代码使用了不正确的函数。应该是

$mysqli->select_db($db)

而不是:

$db_selected = mysqli_select_db($db, $link);

事实上,顺序正确的是:

$db_selected = mysqli_select_db($link, $db);

阅读mysqli_select_db()PHP documentation,了解有关正确使用的更多详细信息。

【讨论】:

刚刚更改了我的代码,谢谢。但是连接mysqli似乎没有错误...我仍然无法连接到任何数据库。或者显示其中任何一个,就此而言。有什么想法吗?

以上是关于PHP即使连接也无法选择数据库的主要内容,如果未能解决你的问题,请参考以下文章

Rails 5 API - 即使无法建立与数据库的连接,也加载静态页面

PHP 从HTML选择标签发布查询

即使明确设置 PreparedStatement 也不会超时

无法用php连接到mysql

Laravel - 即使 PHP 版本是必需的,也无法安装包

即使我编辑了 php.ini 并且 php_ldap.dll 在正确的位置,也无法启用 PHP LDAP?