2013-03-25 48 views
5

调用未定义的函数mysql_connect()函数...我已经寻找故障排除互联网这个“调用未定义功能的mysql_connect()”错误,但没有一个提出的过程工程...php + mysql的致命错误:在

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

我去掉扩展在php.ini:

extension=php_mysql.dll 
extension=php_mysqli.dll 

和指定的路径,以这些扩展。

我也为我的PATH变量添加了PHP和MySQL。 我使用的是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); 
?> 

我的想法如何解决这个问题,u能提出一些其他故障排除提示?我对他的问题颇为陌生......我想使用MySQL,因为我将在实际服务器上使用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的信息(我认为这个问题可能是在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 
+2

用phpinfo(),以确保您编辑正确的php.ini – tuffkid 2013-03-25 12:43:51

+0

您是否使用AMP堆叠(灯/瓦帕/等)? – 2013-03-25 12:44:13

+0

我分别安装了php,mysql和apache(我不使用WAMp或任何东西) – Smajl 2013-03-25 12:45:50

回答

6

因为它已经说过使用phpinfo()来确定mysql是否正确运行。 一般来说,你不应该使用mysql了更多,而是MySQL的新改进版本,称为mysqli的http://php.net/manual/de/book.mysqli.php

除了可以编程方式检查是否有method_exists方法存在

+0

奇怪的事情刚刚发生。我重新启动了我的电脑,并且我以某种方式工作。每次更改后我都重新启动了apache,但它没有帮助。这不知怎的,所以我解决了这个问题...无论如何感谢您的答案 - phpinfo()确实帮助了很多... – Smajl 2013-03-25 13:47:58

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(); 
    } 
?> 

MySQL支持将被删除的PHP,所以开始使用MySQLi或PDO来代替。

:)

0

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

然后我用这个功能

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

这一个系统重新启动后。它为我工作;我希望这个对你有用。

2

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

打开终端,运行波纹管的命令。

sudo apt-get install mysql-server 

如果您正在运行PHP,你还需要安装PHP模块针对MySQL

sudo apt-get install php5-mysql