0

我有一个按钮,如果我单击它,我试图到达哪里,它会根据当前登录的用户(会话)将表 users 中的列“gorg”更新为给予者。每次单击按钮时,我都会得到

Access denied for user 'root'@'localhost' (using password: NO)

这是 php 页面的顶部(顺便说一句,我 100% 肯定我的数据库连接信息是正确的)

<?php
session_start();
include('src/sql_handler.php'); //this is where my DB Connection info is located
include('src/facebook_handler_core.php');
if(isset($_POST['submitgiver'])) {
    $query = "UPDATE users SET gorg='giver' WHERE email='".mysql_real_escape_string($_SESSION['email'])."'";
    $result = mysql_query($query) or die(mysql_error());

}

{
  if(isset($_SESSION['gorg'])=="Giver")
  {
    header('Location: picktreetype.php');
  }
  else if(isset($_SESSION['gorg'])=="Gatherer")
  {
    header('Location: gatherermap.php');
  }

}

?>

现在对于 html

<form method="post" action="<?php echo $PHP_SELF;?>">

<input type="submit" class="button orange" name="submitgiver" value="Giver">

</form>

更新:

这是 SQL_HANDLER

<?php


class MySQL_Con {

    private $host = 'localhost',

            $user = 'fruitfo1_admin',

            $pass = 'password',

            $db = 'fruitfo1_fruitforest',

            $_CON;



    function MySQL_Con() {

        $this->_CON = mysql_connect($this->host, $this->user, $this->pass);

        if(!$this->_CON)

            die(mysql_error());

        else {

            $select_db = mysql_select_db($this->db);

            if(!$select_db)

                die('Error Connecting To Database'.mysql_error());

        }

    }

    function End_Con() {

        mysql_close($this->_CON);

    }

}

?>
4

3 回答 3

2

显然您的连接设置不包括密码。请发布sql_handler(带有混淆密码)以便能够进一步调试。

如果您 100% 肯定这是正确的,正如您所说,您可以尝试将 sql 句柄显式传递给mysql_query.

另一个注意事项,mysql_*已弃用,您真的应该考虑切换到mysqlior 或PDO.

此外,将root用户用于任何类型的 Web 应用程序都是禁止的。

于 2012-08-17T09:58:52.563 回答
0

您的数据库没有密码。尝试这个

  private $host = 'localhost',

        $user = 'fruitfo1_admin',

        $pass = '',

        $db = 'fruitfo1_fruitforest',

        $_CON;
于 2012-08-17T10:45:54.653 回答
0

我发现了我的问题,它确实与我认为的问题有关。这是我更新的代码

if(isset($_POST['submitgiver'])) {
$mysql_hostname = "localhost";
$mysql_user = "fruitfo1_admin";
$mysql_password = "password";
$mysql_database = "fruitfo1_fruitforest";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
mysql_select_db($mysql_database, $bd) or die("Could not select database");
$query = "UPDATE users SET gorg='giver' WHERE email='".mysql_real_escape_string($_SESSION['email'])."'";
$result = mysql_query($query) or die(mysql_error());
}

基本上,试图 POST 的 IF 语句没有链接回我的处理程序,所以我放置了来自处理程序的 SAME db 连接并将其传递到 if isset 语句中,它起作用了!

于 2012-08-17T11:09:40.050 回答