【问题标题】:Catching the returned value捕获返回值
【发布时间】:2014-03-20 20:07:26
【问题描述】:

这可能是一个愚蠢的问题,但网络上的每个资源似乎都无法向我复杂的大脑完全解释逻辑

有一个从链接获取 $_GET['id'] 的编辑页面。 我在课堂上有一个函数来详细说明这个函数,以从数据库中创建一个值数组,这些值必须填充表单字段才能编辑数据。这段代码的简短部分:

public function prel() {
    $this->id= $_GET['id'];
}




public function EditDb () {

    $connetti = new connessionedb();
    $dbc = $connetti->Connessione();

    $query = "SELECT * from anammi.anagrafica WHERE id = '$this->id'";

    $mysqli = mysqli_query($dbc, $query);
    if ($mysqli) {
        $fetch = mysqli_fetch_assoc($mysqli);
        return $fetch;

    }
}

这个数组(我试图打印)已经完全准备好做我想做的事了。 当我需要将它传递给同一类中的以下函数时,我的痛苦就开始了,它可能调用父方法来打印表单:

public function Associa() {
    $a = $this->EditDb();

    $this->old_id = $a['old_id'];
    $this->cognome = $a['cognome'];
    $this->nome = $a['nome'];
    $this->sesso = $a['sesso'];
    $this->tipo_socio_id = $a['tipo_socio_id'];
    $this->titolo = $a['titolo']; }


public function Body() {
      parent::Body();
 }

我该如何传递这个 $fetch?

我的实现:

<?php
    require_once '/classes/class.ConnessioneDb.php';
    require_once '/classes/class.editForm';

    $edit = new EditForm();
    $edit->prel();
    if ($edit->EditDb()) {
      $edit->Associa();
      $edit->Body();

【问题讨论】:

  • 那你想要什么?从 EditDb() 中使用 $fetch ?
  • 你可以让 $fetch 成为类的属性或者写成 $fetch = $edit->EditDb();
  • 是的,我必须获取数组 $fetch 的值才能将它的值解析为 Associa(),哪些变量是表单 Body() 的值属性
  • {$this-&gt;id} 否则它不会插值

标签: php oop return


【解决方案1】:
if (if ($edit->EditDb()) {
  $edit->Associa();
  $edit->Body();) {
      $edit->Associa();
      $edit->Body();

您的 Editdb 方法正在返回一个字符串,并且您正在检查 if 语句中的布尔条件。这是一个问题。 使用 fetch-

$fetch=$edit->EditDb();
      $edit->Associa();
      $edit->Body($fetch);

【讨论】:

  • 谢谢 Sunny,这不是我的完整解决方案,但你给了我正确的建议,让它与 $fetch=$edit->EditDb() 和 $edit->Body($fetch) 一起工作.这种将变量嵌入函数范围的机械过程对我来说仍然有点棘手,但这些建议给了我解决的方法。我正在回答我自己的问题以发布解决方案。谢谢!
【解决方案2】:

发布它的完整代码:

public function prel() {
    $this->id= $_GET['id'];
}

public function EditDb () {

    $connetti = new connessionedb();
    $dbc = $connetti->Connessione();

    $query = "SELECT * from table WHERE id = '$this->id'";

    $mysqli = mysqli_query($dbc, $query);
    if ($mysqli) {
        $fetch = mysqli_fetch_assoc($mysqli);
        return $fetch;


    }
}

public function Associa($fetch) {


    $this->old_id = $fetch['old_id'];
    $this->cognome = $fetch['cognome'];
    $this->nome = $fetch['nome'];
    $this->sesso = $fetch['sesso']; //it goes on from there with many similar lines
}

public function Body() {
    $body = form::Body();
    return $body;
}

实施

$edit = new EditForm();
    $edit->prel();
    $fetch=$edit->EditDb();
    $edit->Associa($fetch);
    $print = $edit->Body();
    echo $print;

作为基于父插入表单的编辑表单,我在父表单中添加了一个 if 来查看是否设置了 $_GET['id] 并使用正确的表单操作打印正确的表单标题。这很棘手,但真的很令人满意。

【讨论】:

    猜你喜欢
    • 2013-01-21
    • 2016-09-09
    • 2014-01-23
    • 2016-05-02
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多