PHP中的MySQL连接错误
我已经为root设置了密码并授予root的所有权限。它为什么说它被拒绝?PHP中的MySQL连接错误
****mysql_query() [function.mysql-query]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\photo_gallery\includes\database.php on line 56
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\photo_gallery\includes\database.php on line 56
The Query has problemAccess denied for user 'SYSTEM'@'localhost' (using password: NO)
代码如下:
<?php
include("DB_Info.php");
class MySQLDatabase
{
public $connection;
function _construct()
{
$this->open_connection();
}
public function open_connection()
{
$this->connection = mysql_connect($DB_SERVER,$DB_USER,$DB_PASS);
if(!$this->connection)
{
die("Database Connection Failed" . mysql_error());
}
else
{
$db_select = mysql_select_db($DB_NAME,$this->connection);
if(!$db_select)
{
die("Database Selection Failed" . mysql_error());
}
}
}
function mysql_prep($value)
{
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote if not a number
if (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
public function close_connection()
{
if(isset($this->connection))
{
mysql_close($this->connection);
unset($this->connection);
}
}
public function query($sql)
{
$result = mysql_query($sql);
$this->confirm_query($result);
return $found_user;
}
private function confirm_query($result)
{
if(!$result)
{
die("The Query has problem" . mysql_error());
}
}
}
$database = new MySQLDatabase();
?>
缺少第二次在
class MySQLDatabase
{
public $connection;
function _construct()
{
强调了__construct()解释了所有的症状(MySQL的_query提高警告,没有未定义的变量声明,不管你做什么,使参数提供给function open_connection()
它doesn不工作,因为它从来没有被调用,访问被拒绝系统 @ localhost,因为你的web服务器作为localsystem运行,因此system
是默认的mysql连接的默认用户名,...)
当您通过$database = new MySQLDatabase();
创建新对象时,_construct()方法不会被调用,因此既不是$ this-> open_connection()也不是因此没有赋值给属性$ connection,而是保留为NULL,并且没有连接到mysql服务器建立了。
现在,当你调用$database->query('something');
并没有数据库连接的mysql_query()尝试建立默认连接,在http://docs.php.net/mysql_query解释说:
资源的mysql_query(字符串$查询[,资源$ link_identifier])
[... ]
如果未指定链接标识符,则假定由mysql_connect()打开的最后一个链接。 如果没有找到这样的链接,它会尝试创建一个,就好像调用mysql_connect()时没有参数一样。如果未找到或建立连接,则会生成E_WARNING级别错误。
- 固定在_construct错字()
- 通过这 - $>连接mysql_escape_string()和请求mysql_query()和mysql_error()
- 确保
open_connection()
有它所需要的所有参数,例如isset($DB_SERVER,$DB_USER,$DB_PASS,$DB_NAME) or die('missing parameters');
- 添加一些调试输出以查看它是否已被调用,例如,
echo "Debug: this->connection = mysql_connect($DB_SERVER,$DB_USER,$DB_PASS);\n";
- 不要推出自己的MySQL类,使用gazillion现有的类之一,最好是具有更广泛接受度的类之一。
您还没有在当前variable scope中定义的任何的$DBSERVER
,$DBUSER
,$DBPASS
。
如果这些变量是在全球范围内,你必须添加以下到使用它们的功能:
global $DBSERVER,$DBUSER,$DBPASS;
如果你打算使用在open_connection
功能,您必须首先取消注释定义,然后评价变量然后更改传递给mysql_connect
函数的参数。
您正在以SYSTEM用户身份连接,但没有密码,显然不允许连接到MySQL服务器。
只有两个像根@ LOCALHOST和127,0 ... @ LOCALHOST有没有系统的东西...我已经为它设置了密码 – Vicky 2010-04-16 11:46:05
你真的应该清理你的问题。这只是您发布的早期问题的重新发布。
我相信你的代码中有一个错字,可能会导致你的问题。您将连接参数定义为$DB_SERVER
等,但您在mysql_connect()
调用中使用$DBSERVER
。您需要在连接调用中将下划线添加到变量名称中。
实际上没有参数错误,我试图改变它。 define('DB_SERVER','')? null:define(“DB_SERVER”,“localhost”);这是在CONFIG.PHP文件中我打电话使用INCLUDE(“CONFIG”);但我不知道它不打电话给这个文件。为什么我不知道... PLZ HELP – Vicky 2010-04-16 11:45:02
首先,您需要做:include(“config.php”)而不仅仅是include(“config”)。上面你仍然需要遵循Yacoby的建议。 – 2010-04-16 11:52:07
由于您的CapsLock键显然有问题,您是否检查过变量和密码?他们可能全都戴着帽子呢? (对不起,这没有任何帮助..但我无法抗拒,真的很抱歉) – VolkerK 2010-04-16 11:53:49
请不要回滚修订以处理代码格式。 – Yacoby 2010-04-16 11:40:44
http://stackoverflow.com/questions/2650033/i-am-getting-error-like-mysql-connect-acces-denied-for-systemlocalhostusing-p – 2010-04-16 11:44:13
global $ DBSERVER,$ DBUSER,$ DBPASS, $ DBNAME; $ DBSERVER =“localhost”; \t $ DBUSER =“root”; \t $ DBPASS =“”;(有我设定的密码) \t $ DBNAME =“photo_gallery”; – Vicky 2010-04-16 11:53:46