与MySQL的远程连接通过命令行工作,但是当从Web浏览器使用php的mysql_connect时失败

时间:2012-06-22 16:11:41

标签: php mysql mysql-connect

我正在尝试使用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;
?>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

运行PHP的远程主机使用什么操作系统?也许在php.ini中没有启用MySQL。另外,请不要将mysql_*函数用于新代码。它们已不再维护,社区已开始deprecation process(请参阅red box)。相反,您应该了解prepared statements并使用PDOMySQLi。如果您无法确定哪个,this article会对您有所帮助。如果您想学习,this is a good PDO tutorial

您是否尝试过使用PDO或MySQLi界面?如果您正在尝试学习PHP,那么不应该使用mysql _ *函数。查看是否可以使用与此类似的行访问数据库:

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

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

编辑:此外,尝试使用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);
?>