5

我已经在互联网上搜索了此“调用未定义函数 mysql_connect()”错误的故障排除,但建议的程序均无效...

当我尝试从 php 访问 mysql 时,出现此错误。我有 PHP 版本 5.2.17 和 MySQL 5.1.68(mysql 在 php 之外运行,我尝试创建表和数据库等)。

我取消注释 php.ini 中的扩展:

extension=php_mysql.dll
extension=php_mysqli.dll

并指定这些扩展的路径。

我还将 PHP 和 MySQL 添加到我的 PATH 变量中。我正在使用 Apache 2.2。每次更改后我都重新启动了服务器。

这是我在 php 中用于访问数据库的代码(但我认为问题不在于语法):

<?php     
      $dbhost = 'localhost';
      $dbuser = 'root';
      $dbpass = 'pasw';
      $dbname = 'db';

      $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
      mysql_select_db($dbname);
?>

我不知道如何解决这个问题,你能建议一些其他的故障排除技巧吗?我对他的问题很陌生...我想使用 MySQL,因为这就是我将在我的网站启动并运行时在实际服务器上使用的内容。提前致谢!

编辑:这是来自 apache 日志:

[Mon Mar 25 13:50:42 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined function mysql_connect() in C:\\Web\\thenemis\\dbconnect.php on line 7, referer: http://localhost/thenemis/admin.php
[Mon Mar 25 13:50:42 2013] [error] [client 127.0.0.1] File does not exist: C:/Web/favicon.ico

EDIT2:这是来自 php info (我认为问题可能出在 php.ini 文件中的一些未指定的参数上)。除了扩展名和路径之外,我还没有读到任何我应该指定其他功能的地方,但也许我错了......你有什么建议?

mysql

MySQL Support   enabled
Active Persistent Links 0
Active Links    0
Client API version  5.0.51a

Directive   Local Value Master Value
mysql.allow_persistent  On  On
mysql.connect_timeout   60  60
mysql.default_host  no value    no value
mysql.default_password  no value    no value
mysql.default_port  no value    no value
mysql.default_socket    no value    no value
mysql.default_user  no value    no value
mysql.max_links Unlimited   Unlimited
mysql.max_persistent    Unlimited   Unlimited
mysql.trace_mode    Off Off
4

4 回答 4

6

正如已经说过的,使用 phpinfo() 来确定 mysql 是否正常运行。一般来说,您不应该再使用 mysql,而是使用新的改进版 mysql,称为 mysqli http://php.net/manual/de/book.mysqli.php

您还可以使用 method_exists 方法以编程方式检查函数是否存在

于 2013-03-25T13:44:01.947 回答
3

尝试使用这个:

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'pasw';
$dbname = 'db';

<?php
// Create connection
$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);

// Check connection
if (mysqli_connect_errno($con))
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>

PHP 将不再支持 MySQL,因此开始使用 MySQLi 或 PDO。

:)

于 2013-03-25T13:54:21.303 回答
2

验证您的 PHP 安装是否已使用 mysql 支持进行编译。<?php phpinfo(); exit(); ?>创建一个包含并在浏览器中运行的测试 php 文件。在页面中搜索关键字“MySQL”。如果你没有看到它,你需要重新编译 PHP 并支持 MySQL,或者重新安装一个内置的 PHP 包。

打开终端并运行以下命令。

sudo apt-get install mysql-server

如果您正在运行 PHP,您还需要为 mysql 安装 php 模块

sudo apt-get install php5-mysql
于 2015-06-03T09:43:13.533 回答
0

我在计算机的系统变量中设置了 PHP 的路径,将路径值编辑为C:/program files/php;extension=php_mysqli.dllphp.ini.

然后我使用了这个功能

mysqli_connect($host,$username,$password)or die(mysql_error()); 

之后系统重新启动。它对我有用;我希望这个对你有用。

于 2014-06-23T00:44:39.300 回答