1

我正在制作 PHP 和 MySQL RPG 游戏,但我的 changeEquipment 页面无法正常工作。我收到这些错误:

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

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

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

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

4

1 回答 1

2

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

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

于 2012-05-11T02:42:36.983 回答