【问题标题】:How do you pass constructor GET parameter across methods in a class? PHP如何跨类中的方法传递构造函数 GET 参数? PHP
【发布时间】:2011-10-25 17:36:55
【问题描述】:

我基本上是在尝试将 GET 值从构造函数传递给 insert_update 函数。我已经去掉了很多后者的功能。另外,如果值得注意的话,这个页面是一个包含页面。

class Updates {

function __construct(){
$owner = $this->get = array_map('mysql_real_escape_string', $_GET);
$owner=$owner["member_id"];
echo $owner;
}


//Insert Update
public function Insert_Update() 
{
$query = mysql_query("INSERT INTO `field` (foo) VALUES (N'$owner')") or die(mysql_error());
}       

【问题讨论】:

  • 我有点困惑。构造函数中的 $owner var 是什么?您想在构造函数中从 get 中获取 member_id 并在 insert_update 方法中使用它?
  • 这正是我想做的。
  • 在 SQL 查询中 - 你想要所有来自 post 的东西吗?还是只是 member_id ?
  • 为什么不在 insert_update 中使用 $this->get['member_id']?
  • 你的意思是没有构造函数?

标签: php oop class function methods


【解决方案1】:
class Updates {
  private $owner;
  function __construct(){
  $owner = $this->get = array_map('mysql_real_escape_string', $_GET);
  $this->owner=$owner["member_id"];
  echo $this->owner;
  }


  //Insert Update
  public function Insert_Update() 
  {
  $query = mysql_query("INSERT INTO `field` (foo) VALUES (N'".$this->owner."')") or die(mysql_error());
  }
}

【讨论】:

  • 您是否将“所有者”声明为班级成员?我更新了答案中的代码,请看 2 行。
  • 我复制并尝试了这个,但由于某种原因,它只是在数据库中给了我一个空白。
  • 但是 echo $this->owner;从构造函数显示正确的字符串?你能显示这个回声吗?尝试同时添加“echo $this->owner;”在 sql 查询之前检查是否有正确的值。
  • echo $this->owner; from 构造函数显示正确,但在 sql 查询之前的 Insert_Update 内,我无法使用相同的代码显示它。
【解决方案2】:

您可以将owner 设为Updates 的成员并将其存储在this->owner 中。

【讨论】:

  • 如何在不调用 __construct 的情况下获取 get 参数?
  • 无论如何,如果不先打电话给__construct(),你就不能打电话给Insert_Update()
  • 如何让它成为 Updates 的成员?
  • 其他答案告诉你:private $owners; ... $this->owners = $owners
  • 所以我应该让它同时成为构造和 Insert_Update 的成员?我试过了,但也没有用。
【解决方案3】:
class Updates {

    protected $owner;

    function __construct($myGetVariable)
           $this->owner = $myGetVariable;
    }

    //Insert Update
    public function Insert_Update() 
    {
           // you can access the variable by typing:
           echo $this->owner;
           $query = mysql_query("INSERT INTO `field` (foo) VALUES (N'".$this->owner."')") or die(mysql_error());

    }   

*抱歉修改了几次,复制粘贴不正确,然后我想让它更清楚。

【讨论】:

  • 所以,使用这个:protected $owner;函数 __construct($myGetVariable){ $this->owner = array_map('mysql_real_escape_string', $_GET);回声 $this-> 所有者; SQL 插入:{.$this->owner.} 带回一个数组,关于如何获取实际获取值的任何想法?
  • 嗯,这取决于你传递给构造函数的内容。在您提供的示例中,您似乎想要获取$owner["member_id"],我简化了示例以使要点更清楚一点。为了使我的示例正常工作,您将通过传递所需的变量来实例化该类。然后,您可以对构造函数中的值进行任何清理。 $updates = new Updates($_GET["member_id"]); 然后使用您喜欢的任何方法清理构造函数中的值,例如 mysql_real_escape_string
  • $this->owner = array_map('mysql_real_escape_string', $_GET); ——这条线负责。 array_map 返回数组,并且您将此返回的数组分配给“所有者”字段。
  • 其实我重新检查了一下,问题是数组本身是空的;我只是在 Insert_Update 中得到一个空数组。
猜你喜欢
  • 2018-02-13
  • 2012-11-03
  • 2011-09-04
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多