【问题标题】:mysql_connect() - deprecated? Using localhostmysql_connect() - 已弃用?使用本地主机
【发布时间】:2014-03-21 16:27:03
【问题描述】:

我建立了一个本地数据库,并使用连接脚本连接到localhost下的数据库,使用以下行:

mysql_connect('localhost', 'root', '');

我现在需要将生产服务器的工作转移到我的实际服务器上。

我的第一个问题是我应该将“localhost”更改为什么,以及对 root 的理解?我需要在我的服务器上准备一个 PRIVATE 部分,但目前所有内容都在 public_html 中。那是我用 localhost 替换的吗?

但是在搜索时我发现mysql_connect 已被弃用。那么替换是什么?

这是连接数据库marmit_1的整个脚本

<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('marmit_1');

【问题讨论】:

  • 查看PDO
  • 是的,它已被弃用。使用 MySQLiPDO — 检查链接以获取示例。

标签: php mysql phpmyadmin database-connection


【解决方案1】:

localhost 在这种情况下是您的脚本将尝试连接到 MySQL 服务器的主机名。 localhost 通常连接到环回适配器,换句话说,它连接到与运行代码的机器相同的机器。

如果 MySQL 服务器与 Apache/PHP 运行在同一台物理机器上,那么您可以使用 localhost 作为主机名连接到 MySQL 服务器,前提是 MySQL 服务器配置为在 localhost 上运行(默认)。

如果 MySQL 服务器位于远程主机上或手动配置为不绑定到默认的环回适配器 127.0.0.1,您只会更改 localhost

【讨论】:

  • 那么我可能需要与我的主人讨论这个问题吗?抱歉,我不是真正的后端开发人员,所以这就是我感到困惑的地方!我有daily.co.uk/power panel 提供的托管服务。我想我需要问他们连接参数需要是什么。
  • @Francesca,首先尝试localhost,因为它是默认设置。如果这不起作用,请询问他们。
【解决方案2】:

这是 MySQLi 连接的简单示例。

<?php
$con=mysqli_connect("localhost","root","password","database_name");

if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM test");

echo "<table border='1'>
<tr>
<th>First name</th>
<th>Last name</th>
<th>Caption</th>
</tr>";

while($row = mysqli_fetch_array($result)) {
  echo "<tr>";
  echo "<td>" . $row['firstname'] . "</td>";
  echo "<td>" . $row['lastname'] . "</td>";
  echo "<td>" . $row['caption'] . "</td>";
  echo "</tr>";
  }

    echo "</table>";

mysqli_close($con);
?>

参考文献:

【讨论】:

    【解决方案3】:

    这里是super simple PDO-based solution:

    <?php
    include 'bestpdo.php';
    $result = DB::query("SELECT * FROM test")->fetchAll();
    ?>
    <table border='1'>
    <tr>
      <th>First name</th>
      <th>Last name</th>
      <th>Caption</th>
    </tr>
    <?php foreach($result as $row) {
    <tr>
      <td><?=$row['firstname']?></td>
      <td><?=$row['lastname']?></td>
      <td><?=$row['caption']?></td>
    </tr>
    <?php endforeach ?>
    </table>
    

    请注意,使用 PDO 包装器,无论您运行什么查询,您的代码都将保持与以前基于 mysql ext 的旧代码一样简单。
    使用原始 mysqli 会很痛苦——这些广告都不想告诉你。

    【讨论】:

      【解决方案4】:

      正如其他人已经说过的,您应该使用 mysqli 或 PDO 库(我更喜欢 PDO) - 但是您应该明确地使用准备好的语句。

      这部分我不太了解你:

      [...] 我应该将“localhost”更改为什么,以及对 根?我需要在我的服务器上准备一个 PRIVATE 部分,但是 目前一切都在 public_html 中。那是我替换的吗 本地主机? [...]

      让我们把它分成两部分:

      • “mysql 连接中的 localhost”
        此值取决于您的服务器。如果您有一个简单的虚拟主机,您的提供商应该已经为您提供了一些有关如何访问 mysql 数据库的信息。当您拥有专用/虚拟服务器并托管自己的解决方案时,您必须通过主机名或 ip 访问服务器。所以 localhost 或 127.0.0.1 是可以的,当 mysql 由 same 服务器作为您的网页提供时(例如,运行 apache 和 mysql 的同一服务器)

      • “需要准备一个私人部分”
        我认为您正在寻找虚拟主机[1] - 通过这些您可以将不同的网页放在不同的文件夹中:例如:

        /srv/www/mypage.com/
        /srv/www/blog.mypage.com/
        /srv/www/myothersuperpage.com/

      这样您就可以通过 mypage.com 访问位于 /srv/www/mypage.com 下的网页(其他网页也一样)

      [1]http://httpd.apache.org/docs/2.2/vhosts/examples.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-14
        • 1970-01-01
        • 2016-06-18
        • 2017-05-14
        • 1970-01-01
        • 1970-01-01
        • 2013-05-08
        • 2017-10-06
        相关资源
        最近更新 更多