1

PHP と MySQL の RPG ゲームを作成していますが、changeEquipment ページが機能しません。次のエラーが表示されます。

警告: mysql_query() [function.mysql-query]: 21 行目の /home/devinfa1/public_html/spellsword/changeEquipment.php で、ユーザー 'devinfa1'@'localhost' (パスワードを使用: NO) のアクセスが拒否されました

警告: mysql_query() [function.mysql-query]: サーバーへのリンクを /home/devinfa1/public_html/spellsword/changeEquipment.php 行 21 で確立できませんでした

警告: mysql_query() [function.mysql-query]: 27 行目の /home/devinfa1/public_html/spellsword/changeEquipment.php で、ユーザー 'devinfa1'@'localhost' (パスワードを使用: NO) のアクセスが拒否されました

警告: mysql_query() [function.mysql-query]: サーバーへのリンクを /home/devinfa1/public_html/spellsword/changeEquipment.php 行 27 で確立できませんでした

これが私のコードです:

<?php
// Get commonFunctions.php
require_once('commonFunctions.php');

// Start the session and connect to the database
session_start();
$con = mysql_connect("localhost","devinfa1_user","dbpass");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("devinfa1_spellsword", $con);   

// If logged in
if(isset($_SESSION['account_name'])) {
    // If form is submitted
    if(isset($_POST['submit']) || isset($_POST['submit_x'])) {

        // If the hero has more than one weapon
        if(hero_has_multiple_weapons()) {
            // Set new weapon
            mysql_query("UPDATE Hero_Weapons SET active_weapon = TRUE WHERE HW_hero_id =
                (SELECT hero_id FROM Heroes WHERE hero_name = '$_SESSION[hero_name]')
                AND HW_item_id = (SELECT item_id FROM Items WHERE item_name = '$_POST[weapon]')");

            // Unset previous weapon
            if(isset($_SESSION['hero_name'])) {
                mysql_query("UPDATE Hero_Weapons SET active_weapon = FALSE WHERE HW_hero_id =
                    (SELECT hero_id FROM Heroes WHERE hero_name = '$_SESSION[hero_name]')
                    AND HW_item_id = (SELECT item_id FROM Items WHERE item_name = '$_SESSION[weapon_name]')");
            }
        }

// Close the database connection
mysql_close($con);
?>

したがって、PHP はdevinfa1_userユーザー名とdbpassパスワードを使用してデータベースに接続する必要がありますが、パスワードなしでユーザー名を使用しようとしているようdevinfa1です。

私のchangeHeroページにはまったく同じ接続コードと更新ステートメントがあり、完全に機能するため、なぜそうなのかわかりません。何か案は?

4

1 に答える 1

2

マニュアルに従って、クエリで接続を渡します:MySQL接続。リンク識別子が指定されていない場合、mysql_connect() によって開かれた最後のリンクが想定されます。そのようなリンクが見つからない場合、引数なしで mysql_connect() が呼び出されたかのようにリンクを作成しようとします。接続が見つからない、または確立されていない場合は、E_WARNING レベルのエラーが生成されます。

それが機能するかどうかを確認してください。最後の接続をオーバーライドしているように見えます(つまり、hero_has_multiple_weapons() への呼び出しで db 接続が開かれている)か、最後の接続が実際に接続されていませんでした

于 2012-05-11T02:42:36.983 に答える