2

我正在尝试使用 PHP 的 'mysql_connect()' 函数连接到 MySQL 服务器,但连接失败。这是我的代码:

$con = mysql_connect("example.net", "myusername","") or die("Could not connect: ".mysql_error()); 

我将此代码放在 PHP 脚本中,我尝试使用 Web 浏览器打开该脚本(该脚本存储在启用了 PHP 的远程主机上),但它不起作用。它也不返回die错误。$con在浏览器中成功输出之前回显某些内容,而在该行之后没有任何输出。如果我输入:

mysql -h example.net -u myusername

从远程机器上,我可以毫无问题地连接到数据库并进行查询和其他修改。

更新:经过一些建议,我也尝试了这个,但没有改进:

<?php
    $usern = "myusername";
    $dbh = new PDO('mysql:host=servername.net;dbname=test', $usern, "");
    echo $usern;
?>
4

2 回答 2

1

运行 PHP 的远程主机使用什么操作系统?也许 MySQL 没有在php.ini. 另外,请不要将mysql_*函数用于新代码。它们不再被维护,社区已经开始弃用过程(见红框)。相反,您应该了解准备好的语句并使用PDOMySQLi。如果你不能决定哪个,这篇文章会帮助你。如果您想学习,这是一个很好的 PDO 教程

您是否尝试过使用 PDO 或 MySQLi 接口?如果您正在尝试学习 PHP,则无论如何都不应使用 mysql_ * 函数。看看你是否可以使用类似下面的行来访问数据库:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

如果您需要更详细的文档,此代码直接来自文档本身

编辑:另外,尝试使用 PDO 的错误检查功能。此示例使用 PDO 创建数据库连接并尝试执行简单查询。它不使用准备好的语句或任何这些功能,因此它不是生产就绪代码(即*不要在不了解如何改进的情况下将其放入代码中),您需要对其进行编辑以包含SELECT与您的数据库相关的查询,但它至少应该告诉 PDO 提供有关它遇到的错误的更多信息。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$dbhost     = "localhost";
$dbname     = "test";
$dbuser     = "root";
$dbpass     = "admin";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// query
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM booksa";
$q = $conn->query($sql) or die("ERROR: " . implode(":", $conn->errorInfo()));

$r = $q->fetch(PDO::FETCH_ASSOC);

print_r($r);
?>
于 2012-06-22T17:05:50.007 回答
1

php 文件是否与 mysql 数据库位于同一服务器上,如果是这样,您可能必须使用 'localhost' 作为 mysql_connect() 的第一个参数,而不是外部地址。

于 2012-06-22T16:17:21.633 回答