我正在尝试使用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;
?>
答案 0 :(得分:1)
php文件是否与mysql数据库位于同一服务器上,如果是这样,你可能不得不使用'localhost'作为mysql_connect()的第一个参数而不是外部地址。
答案 1 :(得分:1)
运行PHP的远程主机使用什么操作系统?也许在php.ini
中没有启用MySQL。另外,请不要将mysql_*
函数用于新代码。它们已不再维护,社区已开始deprecation process(请参阅red box)。相反,您应该了解prepared statements并使用PDO或MySQLi。如果您无法确定哪个,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);
?>