ThinkPHP调用存储过程及数组合并问题

ThinkPHP调用存储过程

 $db=M("");
 $sql="call queryByGroupID('$groupId')";
 $data=$db->query($sql);

参考百度:https://zhidao.baidu.com/question/1950211007687098188.html

$model = M("");
$sql = "call 存储过程名称('{$参数1}','{$参数2}',@result)";
$ref = $model -> query($sql);
//var_dump($ref); $ref 结果集
// 结果集视具体情况而定
$status= $ref[0]['result'];

数组的合并问题的解决

参考学习:http://www.cnblogs.com/52php/p/5659866.html
脚本之家:http://www.jb51.net/article/31276.htm
对于键值不同数组的合并可以使用array_merge();

在使用array_merge()时要注意的问题:使用array_merge是需要注意任何一个参数为null的时候,总会返回Null,所以对数据库读取出来的结构进行合并的时候,需要对结果做强制类型转换,array_merge((array)$res1,(array)$res2,(array)$res3...)
//从json格式存储为数组格式,并取出用户基本信息
foreach($oneMessage as $item){
 $pageOne=json_decode($item,true);
 $userId=$pageOne['userid'];
 $userInfo=$user->field('nickname','headimg')->where("userId=".$userId)->find();
 $userMessage['nickname']=$userInfo['nickname'];
 $userMessage['headimg']=$userInfo['headimg'];
 //把美物基本信息与用户基本信息合并
 $result[]=array_merge($item,$userMessage);
}

一些问题解决思路的总结

1.聊天信息的问题处理
websocket 聊天,如果两个人同时在线可以,但是如果一个人下线,如何才可以在下次登录时立刻收到离线信息
讨论:一句一句存redis,如果已读一句一句从redis写入文本,等一方离线时,未读的信息还是存放在redis中,等用户上线立刻从redis队列中pop出来。
两人聊天时,redis中键以两人关系为键 房间号
2.连表查询,三表union的处理
在数据中,写好机遇过程的函数,在thinkphp中调用存储过程,在此三表查询的字段的所有名称是一致的。

总结

好好学习,天天向上,今天也是。

你可能感兴趣的:(ThinkPHP调用存储过程及数组合并问题)