php - 对象方法不返回结果

标签 php html css

我无法恢复请求的值,我必须根据其名称从数据库中恢复字符的数据对象,然后显示此信息。

所以当我想使用我的 Angular 色时,只要输入他的名字,我们就会看到这个:

// If want use a character
elseif(isset($_POST['use']) && isset($_POST['name']))
{
    if($manager->exist($_POST['name']))
    {
        $perso = $manager->getPerso($_POST['name']);
    }
    else
    {
        $message = 'Ce personnage n\'existe pas !';
    }
}

函数 getPerso 是从数据库返回数据对象的 cella,这个方法在类 PersonagesManager 中:

public function getPerso($info)
{
  $column = is_int($info) ? 'id' : 'namePerso';
  $q = $this->_db->prepare('SELECT id, namePerso, damage FROM personnages WHERE ' . $column . '=:' . $column);
  $q -> bindValue(':' . $column, $info);
  $q -> execute();

  return new Personnage($q->fetch(PDO::FETCH_ASSOC));
}

在我的 Character 类级别,没有什么很复杂的,我通过以下方法得到了他的名字:

public function name()
    { return $this->_name; }

然后,当我发送表单时,我会进行一些检查,然后当使用 getPerso 方法恢复 Angular 色时,$ perso 已定义,我会显示有关此 Angular 色信息的页面以了解:创建,他的名字,这些伤害,最后是除了他之外的 Angular 色列表:

if(isset($perso))
        {
            print_r($perso);
        ?>

        <p><a href="?deconnexion=1">Déconnexion</a></p>

        <fieldset>
            <legend>Mes informations :</legend>
            <p>
                Nom : <strong><?php echo htmlspecialchars($perso->name()); ?></strong><br/>
                Dégats : <strong><?php echo $perso->damage(); ?></strong>
            </p>
        </fieldset>

        <fieldset>
            <legend>Qui frapper ?</legend>
            <p>
            <?php 
            $persos = $manager->getListPerso($perso->name());

            if(empty($persos))
            {
                echo 'Personne à frapper !';
            }
            else
            {
                foreach($persos as $onePerso)
                {
                    echo "<a href='?hit=" . $onePerso->id() . "'>" . htmlspecialchars($onePerso->name()) . "</a> Dégats : (" . $onePerso->damage() . ")<br/>";
                }
            }         
            ?>
        </fieldset>

        <?php
        }

但我无法获得 $ requete 值 ['namePerso'],当我获取我的方法 getPerso 时,我发送而不是 new Personnage -> new Personnage (['namePerso' => $ request [ 'namePerso ']]);

我可以显示名字!但是其他信息没有发送!

public function getPerso($info)
    {
        $column = is_int($info) ? 'id' : 'namePerso';
        $q = $this->_db->prepare('SELECT id, namePerso, damage FROM personnages WHERE ' . $column . '=:' . $column);
        $q -> bindValue(':' . $column, $info);
        $q -> execute();

        $donnees = $q -> fetch(PDO::FETCH_ASSOC);

        return new Personnage(['name' => $donnees['namePerso']]);
    }
// Returns the name but without the other info ...

如果没有,名字就不再显示了,不像id和damage!

编辑-------------------------------------------- ------------------------------

所以我尝试了什么:

  • 通过直接在给我的类中显示名称:
public function getPerso($info)
    {
        $column = is_int($info) ? 'id' : 'namePerso';
        $q = $this->_db->prepare('SELECT id, namePerso, damage FROM personnages WHERE ' . $column . '=:' . $column);
        $q -> bindValue(':' . $column, $info);

        $q -> execute();

        $donnees = $q -> fetch(PDO::FETCH_ASSOC);
        echo $donnees['namePerso'];
        exit();

        //return new Personnage($q->fetch(PDO::FETCH_ASSOC));
    }

结果:名称显示良好
The name displayed

  • 从请求中仅将名称发送到我的路由器,如下所示:
public function getPerso($info)
    {
        $column = is_int($info) ? 'id' : 'namePerso';
        $q = $this->_db->prepare('SELECT id, namePerso, damage FROM personnages WHERE ' . $column . '=:' . $column);
        $q -> bindValue(':' . $column, $info);

        $q -> execute();

        $donnees = $q -> fetch(PDO::FETCH_ASSOC);

        return new Personnage(['name' => $donnees['namePerso']]);

        //return new Personnage($q->fetch(PDO::FETCH_ASSOC));
    }

结果:名称很好返回,但其他信息没有,所以当我取消注释返回所有信息的最后一行时,名称没有返回...
The name well displayed but not others infos

我的实际代码:--------------------

public function getPerso($info)
    {
        $column = is_int($info) ? 'id' : 'namePerso';
        $q = $this->_db->prepare('SELECT id, namePerso, damage FROM personnages WHERE ' . $column . '=:' . $column);
        $q -> bindValue(':' . $column, $info);

        $q -> execute();

        return new Personnage($q->fetch(PDO::FETCH_ASSOC));
    }

最佳答案

我正在寻找解决方案:

  • 我的请求需要返回带有键的数组:'id'、'name'、'damage' 而不是 'namePerso'

所以我把 namePerso 字段放在 name 变量中:

$q = $this->_db->prepare('SELECT id, namePerso AS name, damage FROM personnages WHERE ' . $column . '=:' . $column);

关于php - 对象方法不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59130484/

相关文章:

php从mysql获取信息

html - 我有哪些选项来显示分层数据?

javascript - 我的 `head` 在哪里?

html - CSS 过渡被忽略

html - 嵌套的 flexbox 显示不正确

javascript - 是否可以使用 CSS 分配数据属性?

JavaScript - 如何从函数传递/存储值以形成隐藏字段?

php - 如何将对象(SimpleXMLElement)转换为字符串

php - 这种类型的表达式 "Start Date: [Some Month] [dd], [yyyy]"的正则表达式是什么?

html - 如何测试移动设备的网站