Ubuntu/PHP/MySQL:mysql-functions不工作?

3

最近我在服务器上安装了Ubuntu,取代了Windows。我的网站在Windows/XAMPP下运行得很好,但在Ubuntu下却不行。我试着进行了一个简单的数据库连接:

<?php
    $con = mysql_connect("localhost", "root", "mypassword") or die ("connection error");
    mysql_select_db("db1", $con) or die ("db selection error");
    $qry = mysql_query("SELECT * FROM atable");
    while($row = mysql_fetch_object($qry)) {
        echo $row->id;
    }
?>

但是当我加载页面时,什么都没有发生。PHP运行正常。

<?php echo "test"; ?>

一切都按预期工作...

我的(测试目的)设置如下:

  • Ubuntu 11.04 和 LAMP
  • my.cnf 中 mysql 的 bind-adress 设置为 0.0.0.0
  • mysql 的 root 用户的主机设置为 %,权限授予 .
  • php5 的 extension_dir 设置为 "/usr/lib/perl5/auto/DBD/mysql/mysql.so"

我错过了什么/做错了什么?


2
不确定这是否是您的完整代码,但您期望什么?如果mysql连接/选择数据库成功,您的代码将不会输出任何内容。 - Bernhard Kircher
正如Bernhard所说,您发布的代码片段没有输出任何内容,即您正在连接到数据库但未发出任何选择/更新等命令。 - user481572
抱歉,我忘记了剩下的内容。 - Eike Cochu
据我所知,extension_dir 应该是一个目录,而不是 *.so 文件。 - RiaD
你是对的,将它改为该目录。 - Eike Cochu
你有解决这个问题的方法吗?我也遇到了完全相同的问题。脚本在我的本地Windows开发机上运行良好,但上传到Ubuntu服务器后失败了。我知道我的php设置正确,因为我能够将语句输出到屏幕上。我也确定我的数据库连接正常,因为如果我将php用作命令行脚本,一切都按预期工作。就像你一样,如果我在Apache的上下文中执行代码,任何输出都会被输出,但之后没有任何输出。 - Giles Roberts
3个回答

2

您是否已安装了php-mysql包?如果没有,请安装它。在Ubuntu中,您可以在软件包管理器中找到它(搜索php-mysql),或执行以下操作:

sudo apt-get install php-mysql

安装后如有必要,请使用以下命令重启Web服务器:

sudo /etc/init.d/apache2 restart

0

运行以下代码,查看在Apache和php中是否可用mysql支持:

<?php
if (function_exists('mysql_connect')) {
    echo "Good<br />\n";
} else {
    echo "Bad.<br />\n";
}
?>

如果不是的话,你需要:

sudo apt-get install php5-mysql

然后重新启动Apache以使代码生效

sudo service apache2 restart

来源:http://bytes.com/topic/php/answers/869918-mysql_connect-function-isnt-working


0

通过查看错误信息,您可以找出自己做错了什么。

if ($qry !== false) {
    while($row = mysql_fetch_object($qry)) {
        echo $row->id;
     }
} else echo mysql_errno() . ': ' . mysql_error();

但是请记住,如果您的查询在数据库中没有匹配的记录,该查询可能会返回一个空集。在您的情况下,当 atable 为空时,当然什么也不会返回。


1
尝试了那个,但什么都没有发生...还尝试了:echo"1";mysql_connect(...);echo"2";,结果只有'1'。我觉得奇怪的是因为or die(..)应该会输出一些东西,但它却默默地死亡了。 - Eike Cochu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接