Php 如何将变量从控制器传递到模型
我只想传递一个变量,它的输入是使用$this->input->post()获取的 对模态中的函数进行修改 我在模型中的功能是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-
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;
}