2

我通常在我的 PC 中使用 localhost 将 php 连接到 mysql .. 现在我正在尝试将我的项目放在云https://c9.io中,但我无法连接到 mysql。我已经在云中拥有 mysql 数据库并将我的项目放在同一个地方......

mysql_connect("/lib/mysql/socket/mysql.sock","myUser","") or die(mysql_error());

我使用上面的脚本进行连接,但我得到了Unknown MySQL server host '/lib/mysql/socket/mysql.sock' (1)

我该怎么办?

4

5 回答 5

10

好的,所以上面的答案都没有对我有用,但幸运的是我能够设置一个数据库并以我自己的方式启动并运行它,我现在可以进行查询并成功运行它们,所以我将与你分享我的方法希望任何在互联网上搜索的人都能偶然发现这一点,而不必像我一样挠头。

如果您想要快速了解,只需滚动到第 3 步并从那里继续阅读。如果您是一个完整的初学者,请继续阅读,因为我将详细介绍您。

几件事情要提:

  • 您必须通过 Cloud 9 中的终端设置数据库。我之前在终端中没有经验,但学习起来非常简单。
  • 不能使用mysql函数,你必须使用mysqli,因为mysql函数已被弃用并且 Cloud 9 不会运行它们。

第 1 步:在 Cloud 9 上设置 MySQL(在终端中)

在您的项目中,打开一个新终端(单击文本编辑器空间上方的加号选项卡,选择“新终端”)。在终端中,键入mysql-ctl start并按 Enter。MySQL 将在后面启动,但您不会在终端中得到任何响应。

接下来,键入mysql-ctl cli并按 Enter。您应该会看到一些以Welcome to the MySQL monitor.... 恭喜,您已经在 Cloud 9 项目中设置了 MySQL。


第 2 步:创建一个测试数据库(在终端中)

如果您愿意,您实际上可以继续创建您的官方数据库,但为了这个目的,我将只创建一个包含一个包含 ID 和用户名的表的数据库。所以这里是设置数据库和表的步骤。如果您之前使用过 MySQL 和数据库,那么这应该是小菜一碟,但我会为那些可能不完全了解 MySQL 的人详细解释一下。

  1. 键入SHOW DATABASES;并按 Enter。这将显示项目中当前数据库的列表。您可以在想要查看当前项目中的数据库列表的任何时候输入。
  2. 输入CREATE DATABASE sample_db;并按 Enter。你应该得到一个Query OK, 1 Row affected.,这意味着查询成功。您可以随意命名数据库,但对于这个小演练,我将其命名为sample_db.
  3. 输入USE sample_db;并按 Enter。这sample_db从数据库列表中选择。
  4. 输入CREATE TABLE users (id INT(11), username VARCHAR(20));,然后按 Enter。这将创建一个以users两列命名的表:idusername。括号中的数字表示该列将存储在数据库中的字符限制。例如,在这种情况下,username不会保存长度超过 20 个字符的字符串。
  5. 输入INSERT INTO users (id, username) VALUES (1, "graham12");,然后按 Enter。这将在表中添加 id1和用户名graham12。由于该id列是一个INT,我们不会在它周围加上引号。
  6. 输入SELECT * FROM users;,然后按 Enter。这将显示users表中的所有内容。那里唯一的条目应该是我们从刚刚执行的最后一步中插入的内容。

第 3 步:获取从 PHP 连接到数据库所需的凭据。(在终端)

现在我们的表中有一些数据,我们可以测试我们的mysqli连接。但首先,我们必须获得连接到 PHP 数据库所需的凭据。在 Cloud 9 中,我们需要 5 个凭据来连接:

  1. 主机名
  2. 用户名
  3. 密码
  4. 数据库名称
  5. 港口 #

用户名、密码、数据库名称和端口号,现在您实际上已经知道了。我会解释:

  1. 主机名-SHOW VARIABLES WHERE Variable_name = 'hostname';输入 ,然后按 Enter。您将获得一个包含 2 列的表:Variable_nameValue. 在Value列中,您应该会看到类似的内容yourUsername-yourProjectName-XXXXXXX,其中X's 是 7 位数字。写下这个数字或将它保存在某个地方。这是您的主机名。(如果您正在快速了解本演练,只需启动一个新终端并启动您的 mysql 并选择您要使用的数据库,然后输入SHOW VARIABLES WHERE Variable_name = 'hostname';。如果您感到困惑,请从头重新阅读此步骤。 )
  2. 用户名 - 您用于登录 Cloud 9 的用户名。
  3. 密码- Cloud 9 中的数据库没有密码。
  4. 数据库名称- 这将是sample_db或您命名数据库的任何名称;
  5. 端口号- 是3306. 在 Cloud 9 中,您的所有项目都连接到3306. 这是 Cloud 9 的一个通用常数。它不会是其他任何东西。把它写成整数,而不是字符串。mysqli_connect()将端口号解释为long数据类型。

最后一步:用 PHP 连接数据库!(使用 PHP)

打开一个 PHP 文件并将其命名为您喜欢的任何名称。

我将假设我的主机名graham12-sample_db-1234567用于此示例,这就是我的数据的样子:

  • 主机名:“graham12-sample_db-1234567”
  • 用户名:“graham12”
  • 密码: ””
  • 数据库名称:“sample_db”
  • 端口号:3306

因此,在PHP中,相应地插入您的凭据:

<?php

    //Connect to the database
    $host = "grahamsutt12-sample_db-1234567";   //See Step 3 about how to get host name
    $user = "grahamsutt12";                     //Your Cloud 9 username
    $pass = "";                                 //Remember, there is NO password!
    $db = "sample_db";                          //Your database name you want to connect to
    $port = 3306;                               //The port #. It is always 3306

    $connection = mysqli_connect($host, $user, $pass, $db, $port)or die(mysql_error());



    //And now to perform a simple query to make sure it's working
    $query = "SELECT * FROM users";
    $result = mysqli_query($connection, $query);

    while ($row = mysqli_fetch_assoc($result)) {
        echo "The ID is: " . $row['id'] . " and the Username is: " . $row['username'];
    }

?>

如果你得到一个结果并且没有错误,那么你已经成功地设置了一个数据库并在 Cloud 9 中与 PHP 建立了一个连接。你现在应该能够进行所有可以正常进行的查询。

注意:为了简单起见,我在没有使用参数化查询的情况下演示了最后一部分。在使用真正的 Web 应用程序时,您应该始终使用参数化查询。你可以在这里获得更多信息:MySQLi Prepared Statements

于 2014-11-18T03:50:14.157 回答
1

For starters, the mysql_* functions are deprecated so you shouldn't be using them. Look at PDO or mysqli instead. Next, you'll want to try this per the example docs:

$link = mysql_connect('localhost:/lib/mysql/socket/mysql.sock', 'myUser', '') or die(mysql_error());
于 2013-10-23T02:59:54.430 回答
1

要找到运行您项目的 ip,请使用以下代码创建一个测试文件,运行它并将结果作为主机。

<?php 
$ip = getenv("REMOTE_ADDR") ; 
Echo "Your IP is " . $ip; 
?> 
于 2014-02-05T18:19:52.893 回答
0

您使用的是 Cloud9,因此使用起来有些不同。要连接到 MySQL,您必须首先在 C9 中创建 MySQL 服务器。在 C9 的命令行中输入:

mysql-ctl start

C9 将创建您的 mysql 服务器。

MySQL 5.1 database added.  Please make note of these credentials:

       Root User: <username>
   Database Name: c9

接下来查找您的 IP 地址类型:

echo $IP

现在将此代码与您的用户名、IP 地址、无密码和“c9”数据库一起使用来访问 MySQL:

mysql_connect("<$IP>","<username>","") or die(mysql_error());
mysql_select_db("c9")

希望这可以帮助

于 2014-02-05T08:47:26.637 回答
0

文档显示了如何启动、停止和运行 mysql 环境。

mysql-ctl start然后在你的 file.php 中启动 MySQL shell :

$ip =  getenv("REMOTE_ADDR");
$port = "3306";
$user = "YorUsername";
$DB = "c9";

$conn = mysql_connect('$ip', '$user', '', '$db', '$port')or die(mysql_error());
mysql_select_db('$db','$conn')or die(mysql_error());
mysql_query("select * from YourTableName",'$conn')or die(mysql_error());

该行getenv("REMOTE_ADDR")返回与您在 Cloud9 上运行的应用程序相同的本地 IP。

于 2014-07-11T16:59:52.503 回答