Php 如何将变量从控制器传递到模型

Php 如何将变量从控制器传递到模型,php,mysql,codeigniter,Php,Mysql,Codeigniter,我只想传递一个变量,它的输入是使用$this->input->post()获取的 对模态中的函数进行修改 我在模型中的功能是 function get_name($email) { //$email = $this->input->post('email'); $this->db->select('first_name'); $this->db->where('email', $email); $query = $this-

我只想传递一个变量,它的输入是使用$this->input->post()获取的 对模态中的函数进行修改

我在模型中的功能是

function get_name($email) {
    //$email = $this->input->post('email');  
    $this->db->select('first_name');
    $this->db->where('email', $email);
    $query = $this->db->get('sign_up');
    return $query->row()->first_name;
}

作为回报,我希望从函数中返回第一个名称

如果我理解正确,您希望在“注册”表中找到“第一个名称”,其中“email”=$email。您是否尝试过这种方法:

$this->db->select("first_name");
$this->db->from("sign_up");
$this->db->where("email", $email);
$result = $this->db->get()->row();

请检查下面提到的解决方案

function get_name($email) {
    $this->db->select('first_name');
    $this->db->where('email', $email);
    $query = $this->db->get('sign_up');
    $ret = $query->row();
    return $ret->first_name;
}
如果它不起作用,请告诉我

首先&最重要的。。用户输入必须通过适当的验证和消毒

现在,您可以使用下面的控制器和模型示例来获得结果

用户控制器:


您应该将变量从一个模型传递到另一个控制器,而不是从一个控制器传递到另一个模型(例如,因为您要从数据库中获取数据,应该使用模型来完成)。我认为您应该在开始编码之前理解MVC逻辑

型号:

public function get_name()
{
  $email = $this->input->post('email', true);

  $query = $this->db->get_where('sign_up', ['email' => $email])->row('first_name');
  return $query;
}
控制器:

public function some_function_name()
{
  $this->load->model('Your_model_name');
  $some_variable = $this->Your_model_name->get_name();
}

注意:如果您没有使用PHP7,请使用
array()
而不是方括号。

请尝试以下代码以获取名字:

function get_name($email) {
   $firstName = "";
   $this->db->select("first_name");
   $this->db->from("sign_up");
   $this->db->where("email", $email);
   $query = $this->db->get();
   $result = $query->result_array();
   if(!empty($result)){
     $firstName = $result[0]['first_name'];
   }
   return $firstName;
 }
在上面的函数中,如果第一个名称存在,那么它将被提取并以字符串格式发送给控制器


请注意,如果有许多行,那么它也将从结果的第一行获取数据,因为我已经获取了它的第0个元素。

检查您是否获得了
$email
的值。如果你得到的价值超过分享你的table@AmaanIqbal,你确定吗。。?您在POST中获得了正确的电子邮件,您确定在mysql表中有电子邮件匹配记录吗,您确定您的查询创建得很好吗,您确定在phpmyadmin中干运行查询时获得了数据吗,您确定您的表列结构正确吗?你确定你选对了桌子吗。。你确定你的模型函数被调用了吗??其返回“验证错误:电子邮件无效”我猜我没有得到正确的电子邮件使用postHmm,所以你们并没有传递电子邮件给方法。使用具有电子邮件输入的表单,并将该表单发布到controller/methodCodeigniter具有表单验证库,它可以检查表单是否对电子邮件有效,并使用过滤器保存您的电子邮件,但函数get\u name()没有返回任何内容,所以,您是否发布了任何内容?如果你不这样做,你就什么也得不到。我发现了我的错误。我将表单提交给控制器中的其他函数,然后重定向到我所需的函数。因此,在所需函数中不会访问这些值。
public function some_function_name()
{
  $this->load->model('Your_model_name');
  $some_variable = $this->Your_model_name->get_name();
}
function get_name($email) {
   $firstName = "";
   $this->db->select("first_name");
   $this->db->from("sign_up");
   $this->db->where("email", $email);
   $query = $this->db->get();
   $result = $query->result_array();
   if(!empty($result)){
     $firstName = $result[0]['first_name'];
   }
   return $firstName;
 }