我得到了这个功能,用1或0更新帐户,
请注意,account_status的数据类型为boolean。
我理解$ this-> db-> query();在写查询中返回TRUE或FALSE,
但是我遇到了麻烦,因为当我试图在account_status上放置一个非布尔值时,响应仍然成功,但显然它不会更新,因为数据不是布尔值。
public function approve_account($id='0'){
if($id == '0' OR $id== ''){
return FALSE;
}else{
try{
$id = (int)htmlentities($id,ENT_COMPAT,'UTF-8');
$sql= "UPDATE elibrary.elib_user_account e
SET account_status = 'hg'
WHERE t_user_id = ?
LIMIT 1;";
if($this->db->query($sql,$id) === TRUE){
echo 'sucess';
}else{
echo 'FAIL';
}
}catch(Exception $e){
echo $e;
}
}
}
答案 0 :(得分:3)
MySQL没有原生boolean
类型,布尔值表示为tinyint(1)
。在数值列中存储字符串值会将它们强制转换为数值 - 在您的情况下,字符串'hg'
不是有效整数,并且被强制转换为值0
,该值存储在{ {1}}列,并进一步解释为account_status
。如果您的字符串包含有效数字,例如false
,它将存储为整数值'5'
,对于布尔运算,它被视为5
。
答案 1 :(得分:2)
试试这个,受影响的行数
如果它给出0则没有行受影响。
$this->db->affected_rows()
答案 2 :(得分:0)
尝试使用mysql_errno()
从mysql获取有关SQL错误的信息
您应该在query
命令之后执行此操作。
if (mysql_errno()) {
通过这种方式,您可以向用户提供有关错误原因的真实信息