gpt4 book ai didi

PHP CodeIgniter 查询错误

转载 作者:行者123 更新时间:2023-11-29 18:21:41 25 4
gpt4 key购买 nike

这是我的 Controller :

$isExist = $this->Sales_assistant_model->isUserExist($isUser);
$isUserExistInC_user = $this->Sales_assistant_model->checkCuserIs($sdata['email'], $bizId);

if ($isUserExistInC_user == 0) {
//If user in the C-user table
$isAlreadyRegistered = $this->Sales_assistant_model->checkUserEmailInC_user($sdata['email']);
if ($isAlreadyRegistered > 0) {
$businessName = $this->Sales_assistant_model->getBizName($bizId);
$roleName = $this->Sales_assistant_model->getUserRolesByRoleId($sdata['corporate_user_role_role_id']);
$username = $this->Sales_assistant_model->get_C_userNameByEmail($sdata['email']);
$to = $sdata['email'];
$subject = "New Business Role in".$businessName;
$body = "<b>Dear ".$username.",</b> You Have assigned as a ".$roleName." <br> in ".$businessName."<br /> Please Login with " . base_url();
//$this->Email_model->sendEmail($body, $to, "-", $subject);
$res = 1;
} else {
if ($isExist == 0) {
$res = $this->Sales_assistant_model->adduser($sdata);
$to = $isUser['email'];
$subject = "Confirm Registration";
$body = "<b>Dear ,</b> Please click here to confirm your registration . <br>
" . base_url() . "registration/registration?email=" . $isUser['email'] . "&code=" . $invtCode;
//$this->Email_model->sendEmail($body, $to, "-", $subject);
} else {
$status = 2;
$res_update = $this->Sales_assistant_model->updateUser_invite_rejectUser($sdata['email'], $bizId, $status);
$res = $this->Sales_assistant_model->adduser($sdata);
$to = $isUser['email'];
$subject = "Confirm Registration";
$body = "<b>Dear ,</b> Please click here to confirm your registration . <br>
" . base_url() . "registration/registration?email=" . $isUser['email'] . "&code=" . $invtCode;
//$this->Email_model->sendEmail($body, $to, "-", $subject);
}
}
} else {
$res = 0;
}

这些是我的模型函数:

public function checkUserEmailInC_user($email) {
$this->db->trans_start();
$this->db->select('COUNT(email) AS email');
$this->db->from('corporate_user');
$this->db->where('email',$email);
$this->db->where('status','1');
$query = $this->db->get();

if ($query->num_rows() > 0) {
$row = $query->row();
$count = $row->email;
$count = 1;
} else {
$count = 0;
}

return $count;
}

public function get_C_userNameByEmail($email) {
$this->db->trans_start();
$this->db->select('cuser_name');
$this->db->from('corporate_user');
$this->db->where('email',$email);
$this->db->where('status','1');

$query = $this->db->get();

if ($query->num_rows() > 0) {
$row = $query->row();
$count = $row->cuser_name;
}

return true;
}

如果注释该行

$isAlreadyRegistered = $this->Sales_assistant_model->checkUserEmailInC_user($sdata['email']);

内部if条件有效。该函数有什么错误?

例如,如果我为 $isAlreadyRegistered 分配 0,则内部 if 条件有效。

我想知道为什么会出现这种问题?

最佳答案

您的代码有很多问题。

正如评论所问的“为什么使用 $this->db->trans_start();?”您不需要这些报表中的交易。事务仅适用于“写入”类型的查询,例如插入和更新。从模型方法中删除 $this->db->trans_start();

你的代码中经常重复自己的话。实践DRY (不要重复自己)原则。您的模型方法中有很多重复。

模型方法 get_C_userNameByEmail($email) 应返回用户名。相反,它总是返回 TRUE。

以下是 Sales_assistant_model 的修订方法

checkUserEmailInC_user($email) 应返回一个 bool 值。请注意如何使用 protected 函数 runQuery($email) 来干燥代码。

public function checkUserEmailInC_user($email)
{
$this->db->select('email');
$query = $this->runQuery($email);

if($query->num_rows() > 0)
{
return TRUE;
}
//when an "if" block has a "return;", then there is no need for an "else" block
return FALSE;
}

下一个方法应该返回用户名。但如果没有找到记录,那么它必须返回其他内容。 NULL 是一个不错的选择,因为它很容易检查。

public function get_C_userNameByEmail($email)
{
$this->db->select('cuser_name');
$query = $this->runQuery($email);

if($query->num_rows() > 0)
{
return $query->row()->cuser_name;
}

return NULL; //no user name found, send back nothing
}

下一个方法具有可供其他方法使用的代码行。有助于保持模型代码干燥。该方法返回一个CI_DB_result实例记录HERE 。请注意,其他模型方法在调用 runQuery() 之前调用 $this->db->select('some_column');

protected function runQuery($email)
{
return $this->db
->from('corporate_user')
->where('email', $email)
->where('status', '1')
->get();
}

我强烈建议您修改模型方法 isUserExist()checkCuserIs() 以返回 boolean 数据类型而不是整数。然后使用严格的 (===) 比较运算符。

现在到你的 Controller 。

改变

if ($isAlreadyRegistered > 0) {

if ($isAlreadyRegistered === TRUE) {

关于PHP CodeIgniter 查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com