【问题标题】:Error connecting to MYSQL using PHP使用 PHP 连接到 MYSQL 时出错
【发布时间】:2013-12-03 05:18:12
【问题描述】:

我正在处理一项任务,该任务要求我创建一个将信息发送到数据库的表单。 我在连接服务器时遇到问题。

我尝试过使用 mysql_connect 和 mysqli_connect 都不起作用。

mysql_connect 错误: 警告:mysql_connect():连接超时

mysqli_connect 错误: 致命错误:调用未定义函数 mysqli_connect()

                    $connect=mysql_connect("server.com","username","password","database")
                    or die("Failed to connect to server");
                    mysql_query("INSERT INTO client (title,fname,lname,organization,email,phone,tshirt) VALUES ($title,$fname,$lname,$org,$email,$phone,$tshirt)");

                    $tabledata = mysql_query("SELECT * FROM client");
                    echo "<table>
                    <tr>
                    <th>Title</th>
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Organization</th>
                    <th>Email</th>
                    <th>Phone</th>
                    <th>TShirt</th>
                    </tr>";
                    while($row = mysql_fetch_array($tabledata)){
                            echo "<tr>";
                            echo "<td>" . $row['title']  . "</td>";
                            echo "<td>" . $row['fname']  . "</td>";
                            echo "<td>" . $row['lname']  . "</td>";
                            echo "<td>" . $row['org']    . "</td>";
                            echo "<td>" . $row['email']  . "</td>";
                            echo "<td>" . $row['phone']  . "</td>";
                            echo "<td>" . $row['tshirt'] . "</td>";
                            echo "</tr>";
                    }
                    echo "</table>";
                    mysql_close($connect);

来自 PHP INFO 的信息

mysql

启用 MySQL 支持 活动持久链接 0 活动链接 0 客户端 API 版本 mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $

PDO

已启用 PDO 支持 PDO 驱动程序 sqlite

pdo_sqlite

已启用 SQLite 3.x 的 PDO 驱动程序 SQLite 库 3.7.7.1

sqlite3

已启用 SQLite3 支持 SQLite3 模块版本 0.7 SQLite 库 3.7.7.1

指令本地值主值 sqlite3.extension_dir 无值 无值

【问题讨论】:

  • 是不是必须要使用破旧的mysql_query接口?

标签: php mysql


【解决方案1】:

首先,确保 mysql 正在运行,如果它已经在运行,那么我会尝试为您的 php 环境安装 mysql 扩展,以确保:

sudo apt-get install php5-mysql libapache2-mod-auth-mysql

另外,您可能想使用mysqli_*,而不是mysql_*

尝试安装后,只需从那里重新启动 apache。

【讨论】:

  • 我没有此服务器的管理员权限。我 99% 确定它已经安装了。
  • 我收到这个错误:程序 'apt-get' 可以在以下包中找到:* apt [ path: /usr/bin/apt-get, repository: zypp (openSUSE_11.1- 0) ] 虽然我找不到 apt-get
  • 大约一年前我碰巧遇到了同样的问题,这就是解决它的原因。看看你是否可以让具有 root/sudo 权限的人运行它:) 编辑:这是什么发行版?
  • 我能检查mysql是否正在运行吗?
  • 尝试运行命令/etc/init.d/mysql status(或在redhat上)/etc/init.d/mysqld status
【解决方案2】:

首先,您是在本地还是外部连接到您的数据库?如果您在本地连接,mysql_connect(); 的参数将如下所示 mysql_connect('localhost', 'username', 'password');

然后:

mysql_select_db('your_db') 

【讨论】:

  • 考虑到它不会因为不正确的信息(而是一个未定义的函数)而终止连接,我会说这是一个不同的问题。
  • 如果他在外部连接,这可能是他遇到的问题,他需要检查他的网站是否允许外部 IP
  • mysql_connect 只是在失败时返回 false,它不会神奇地取消定义自己...
【解决方案3】:

请在您的问题中使用 PDO::__construct()mysqli_connect

尝试:

$connect=mysql_connect("server.com","username","password");
mysql_select_db("database");

【讨论】:

  • 同样的问题...连接超时
【解决方案4】:

“server.com”是您尝试连接的真实内容吗?您是连接到本地机器上的 mysql 还是外部机器?从 php 服务器尝试 telnet:

telnet <remote db name/IP> 3306

如果失败,则说明您遇到了网络/防火墙问题。或者数据库没有完全监听该端口或网络。在远程数据库上执行 netstat 以确认: Linux

netstat -an | grep LISTENING

如果它正在侦听默认端口,您应该会看到 :3306。

【讨论】:

    【解决方案5】:

    检查你是否在php ini文件中启用了mysqli.dll

    &lt;?php phpinfo(); ?&gt;

    如果没有在 php.ini 文件 //remove ';' 从 dll 名称中启用它

    more info to check

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多