1

我用 MySQL Workbench 创建了一个数据库,现在我需要访问它。所以我写了一个 php 脚本来访问它:

<? 
    $db = mysql_connect("127.0.0.1:3306","root", "");

    if (!$db){
        echo "Could not connect to database";
        exit();
    }

    $db_name = "pfc_db";
    if (!mysql_select_db($db_name, $db)){
        die ("Could not select database");
    }

    $sql=mysql_query("select * from CAPAS");
    while($row=mysql_fetch_assoc($sql)){
        $output[]=$row;
        if (isset($output)){
            echo "yes";
            echo $output[0];
        }
        else{echo "no";}
    }
    mysql_close();

?>

我对 MAMP 和 MySQL 社区服务器有疑问,我需要推动正确的道路。我已经在我的 Mac 上安装了 MAMP,并将端口切换到默认的 mysql 端口 3306。我已经将 PHP 测试脚本放在了我在 htdocs 下创建的文件夹“Api”中。所以要尝试一下,我在浏览器上输入http://127.0.0.1/api/test.php,结果是“无法连接到数据库”。我做对了吗?

那么社区服务器呢?它比 MAMP 更好吗?它应该运行以使 MAMP 工作吗?我可以只使用社区服务器吗?如果是这样,我应该在哪里放置 PHP 脚本?哪个文件夹?因为当我尝试对 Community Server 进行相同的测试时,浏览器并没有显示错误消息,而是开始将 php 脚本下载到我的下载文件夹中。为什么会这样?

正如你所看到的,我对这些服务器的东西有点混乱,我需要一些帮助来解决这个问题。

4

5 回答 5

5

您不需要安装 MySQL Community Server。MAMP 已经随 MySQL 一起提供。

您需要使用该mysql_error()函数在代码中输出更具体的错误。

if (!$db){
    echo "Could not connect to database" . mysql_error();
    exit();
}

$db_name = "pfc_db";
if (!mysql_select_db($db_name, $db)){
    die ("Could not select database" . mysql_error());
}

mysql_error 将从 MySQL 返回错误消息。

于 2011-06-05T15:06:10.933 回答
0

按照我给 user775263 的答案,我得到了这个用户表:

+

--------------------+------+----------+
| Host               | User | Password |
+--------------------+------+----------+
| localhost          | root |          |
| SquirrellJoe.local | root |          |
| 127.0.0.1          | root |          |
| ::1                | root |          |
| localhost          |      |          |
| SquirrellJoe.local |      |          |
+--------------------+------+----------+

如您所见,任何用户都设置了任何密码。但后来我发现 bin/phpmyadmin 下有一个 config.inc.php 脚本,里面有这些句子:

$cfg['Servers'][$i]['auth_type']     = 'config';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'root';      // MySQL user
$cfg['Servers'][$i]['password']      = 'root';          // MySQL password (only needed

我再次尝试连接,$db = mysql_connect("127.0.0.1:3306","root", "root");连接成功。为什么 mysql 命令行中的 users 表没有反映这一点?正常吗?我应该改变它吗?

然后我遇到了另一个问题。它无法选择我在 MySQL Workbench 上创建的数据库“pfc_db”。我收到错误消息Unknown database 'pfc_db'。但是,当我键入mysql> show databases;提到的数据库时,表上确实出现了:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| pfc_db             |
| test               |
+--------------------+

那么这里可能有什么问题呢?

于 2011-06-05T23:05:28.993 回答
0

好吧,我会回答自己,以便如果有人遇到同样的问题。

密码错误的发生是因为我在同一台计算机上安装了两次mysql,所以我正在检查其中一个的密码,而浏览器正在查看另一个。

因此,如果您在密码访问方面遇到问题,请检查您没有安装两个 mysql 并检查文件 config.inc.php

我还通过套接字连接更改了 TCP/IP,如果您使用本地主机作为服务器,它会提高速度。

于 2011-06-07T16:56:49.107 回答
0

这对我有用

sudo mkdir /var/mysql sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

于 2014-01-22T11:44:30.587 回答
0

我遇到了这个问题,并通过使用默认的 TCP/IP 端口而不是套接字端口来修复它。

所以在我的例子中,我使用了8889而不是 3306

$db = mysql_connect("127.0.0.1:8889","root", "");
于 2016-04-07T03:26:02.430 回答