我无法恢复请求的值,我必须根据其名称从数据库中恢复字符的数据对象,然后显示此信息。
所以当我想使用我的 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/