mysql_query()用户拒绝访问

时间:2012-05-11 02:34:54

标签: php mysql

我正在制作PHP和MySQL RPG游戏,而我的changeEquipment页面无效。我收到了这些错误:

  

警告:mysql_query()[function.mysql-query]:拒绝用户访问   'devinfa1'@'localhost'(使用密码:NO)in   第21行/home/devinfa1/public_html/spellsword/changeEquipment.php

     

警告:mysql_query()[function.mysql-query]:指向服务器的链接   无法建立   第21行/home/devinfa1/public_html/spellsword/changeEquipment.php

     

警告:mysql_query()[function.mysql-query]:拒绝用户访问   'devinfa1'@'localhost'(使用密码:NO)in   第27行/home/devinfa1/public_html/spellsword/changeEquipment.php

     

警告:mysql_query()[function.mysql-query]:指向服务器的链接   无法建立   第27行/home/devinfa1/public_html/spellsword/changeEquipment.php

这是我的代码:

<?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页面上有完全相同的连接代码和更新语句,而且效果很好。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

根据手册:MySQL连接,将连接传入查询。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()一样。如果未找到或建立连接,则会生成E_WARNING级别错误。

看看是否有效,看起来好像是覆盖了最后一个连接(即在调用hero_has_multiple_weapons()时打开了数据库连接)或者你的上一个连接没有真正连接