Py学习  »  DATABASE

php中的mysql连接错误

Vicky • 4 年前 • 724 次点击  

我已经为root设置了密码并授予了root的所有权限。为什么说它被拒绝了?

****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();



?>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40340
 
724 次点击  
文章 [ 4 ]  |  最新文章 4 年前
awgy
Reply   •   1 楼
awgy    13 年前

你真的应该把你的问题弄清楚。这只是你之前发布的问题的一个重新发布。

我相信你的代码有一个错别字,可能会导致你的问题。将连接参数定义为 $DB_SERVER 等等,但是你用 $DBSERVER 在你 mysql_connect() 打电话。您需要在connect调用的变量名中添加下划线。

Michal Čihař
Reply   •   2 楼
Michal Čihař    13 年前

您以系统用户身份连接,没有密码,这显然是不允许连接到mysql服务器的。

Yacoby
Reply   •   3 楼
Yacoby    13 年前

你没有定义任何 $DBSERVER , $DBUSER , $DBPASS 在当前范围内 variable scope .

如果这些变量在全局范围内,则必须将以下内容添加到使用它们的函数中:

global $DBSERVER,$DBUSER,$DBPASS;

如果您打算使用定义的变量,然后在 open_connection 函数必须先取消对它们的注释,然后更改传递给 mysql_connect 功能。

VolkerK
Reply   •   4 楼
VolkerK    13 年前

缺少的第二个下划线 __construct() 在里面

class MySQLDatabase
{
    public $connection;
    function _construct()
    {

解释所有症状(mysql γ查询 发出警告,没有未定义的变量通知,无论您如何使参数对 function open_connection() 它不工作仅仅是因为它从未被调用,访问被拒绝 系统 @localhost,因为您的web服务器作为localsystem运行,因此 system 是默认mysql连接的默认用户名,…)

当您通过 $database = new MySQLDatabase(); 方法_construct()未被调用,因此$this->open_connection()和 因此 没有为属性$connection赋值,该属性保持为空,并且 未建立到MySQL服务器的连接 .
现在你打电话来 $database->query('something'); 并且没有数据库连接mysql_query()尝试建立默认连接,如中所述 http://docs.php.net/mysql_query :

资源mysql_query(字符串$query[,资源$link_identifier])
[…]
如果未指定链接标识符,则假定是mysql_connect()打开的最后一个链接。 如果找不到这样的链接,它将尝试创建一个链接,就像调用mysql_connect()时没有参数一样。 如果未找到或建立连接,则会生成E U警告级别错误。

  • 修复construct()中的错误
  • 传递$this->到mysql_real_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类,使用大量现有类中的一个,最好是更广泛接受的一个。