0

ボタンをクリックすると、ログインしている現在のユーザー (セッション) に応じて、テーブル ユーザーの列 'gorg' が更新されます。ボタンをクリックするたびに、

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

これがphpページのトップです(ところで、DB接続情報が正しいと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さらにデバッグできるように、(OBFUSCATEDパスワード付き)を投稿してください。

あなたが言っているように、100%正しければ、SQLハンドルを明示的に渡してみることができますmysql_query

もう 1 つの注意事項は非推奨です。または のいずれかmysql_*に切り替えることを検討する必要があります。mysqliPDO

また、rootあらゆる種類の Web アプリケーションに user を使用することはできません。

于 2012-08-17T09:58:52.563 に答える
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 ステートメントはハンドラーにリンクしていなかったので、ハンドラーから同じ db 接続を配置し、if isset ステートメント内にそれを引き継いだところ、うまくいきました!

于 2012-08-17T11:09:40.050 に答える
0

DB にパスワードがありません。これを試して

  private $host = 'localhost',

        $user = 'fruitfo1_admin',

        $pass = '',

        $db = 'fruitfo1_fruitforest',

        $_CON;
于 2012-08-17T10:45:54.653 に答える