做功能存储显示处理意见时,需要实现往数据库中累积添加数据,我采用方法是:在sql语句中实现字符串的连接,这里使用函数对字符串进行连接,有两个函数:
1.concat (str1,str2…)
function commithandling(){
$suggestion=$this->one['username'].":".$_POST["suggestion"]."/n";
$id=$_POST["id"];
$sql="update warningtable set handlingsuggesion=concat(handlingsuggesion,?) where ID=?;";
$this->db->query($sql,array($suggestion,$id));
}
2.concat_ws(separator,str1,str2,…)
function commithandling(){
$suggestion=$this->one['username'].":".$_POST["suggestion"]."/n";
$id=$_POST["id"];
$sql="update warningtable set handlingsuggesion=concat_ws(' ',handlingsuggesion,?) where ID=?;";
$this->db->query($sql,array($suggestion,$id));
}
这两种方法都可以实现数据库中的字符串的连接,但是两者还是有区别的:
concat:
返回结果连接后的字符串,若参数中有一个null值,则返回值为null
concat_ws:
返回结果连接后的字符串,若参数中有一个null值,返回值会忽略那个null值,分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。
separator是分隔符,是用于放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
今天在使用concat时,因为没有注意,第一次添加数据时,handlingsuggesion字段中的值是空的,则concat的返回值为null,所以数据库中一直显示为空,无值
所以在使用时要注意这两者的区别。
若是大家有什么其它方法欢迎分享