thinkphp的数据库save方法,如果其中一个键值为空为什么拼出来的sql不带引号?

zktz1 2015-05-12 03:27:46
例如代码是这样的

$m=M('member');
$data=$_POST;
$data['id']=3;//主键
$member=$m->save($data);

这里如果$_POST['email']='';
那么拼出来的sql就是 email=, 没有引号,然后就不能update了,$member=0。
换句话说只要$data里有空的键值,那么save($data)就会失败。
换了写法->where('id='.$id)->data($data)->save()也不行

我搜了1个小时了,最后没辙,只能把没有值的替换成NULL,然后数据里写入了‘NULL’,在输出的时候再把‘NULL’替换成''

各位大大,这个是thinkphp自身的问题吗?
还是说我不应该用这个save($data)方法,还有别的方便的update方法?
...全文
574 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhasheng 2015-06-16
  • 打赏
  • 举报
回复

$m=M('member');
$data=$_POST;
$data['id']=3;//主键
if($m->create($data)){
    $member=$m->save();
}
或者修改时,将主键写入隐藏表单

$m=M('member');
if($m->create()){
    $member=$m->save();
}
Seven小七 2015-06-15
  • 打赏
  • 举报
回复
一般这种情况我都是在数据库给默认值。 email 给默认null 数字型给默认0这样就可以直接操作。$data = $_POST ; 过滤$data值后M('表名')->where($where)->save($data);这样用就没错了。
dr21c 2015-06-15
  • 打赏
  • 举报
回复
不应该吧,除非email是必填字段;
weipingti 2015-05-14
  • 打赏
  • 举报
回复
$m=M('member'); $data=$_POST; $id=3;//主键id(更新id等于3的数据是吗?) $member=$m->where("id=".$id)->save($data);
youarelose 2015-05-14
  • 打赏
  • 举报
回复
尽量少用$_POST,试试用_post()方法,直接用$_POST很容易被SQL注入
内容概要:本文围绕基于Boost MPPT与双PI闭环双向DC-DC的离网光伏储能系统展开,系统性地研究了其动力学建模与稳态特性分析,并通过Simulink平台实现了完整的仿真验证。研究构建了涵盖光伏阵列、最大功率点跟踪(MPPT)控制、双向DC-DC变换器及储能电池的整体系统架构,采用Boost电路实现高效MPPT控制,并引入电压-电流双闭环PI控制策略,实现对储能系统精确的充放电管理。文章深入分析了系统在光照强度与环境温度双重扰动下的动态响应与稳态性能,验证了所提出模型的准确性与控制策略在不同工况下的鲁棒性与有效性,为离网光伏储能系统的优化设计与工程应用提供了坚实的理论基础和仿真依据。; 适合人群:具备电力电子技术、新能源系统或自动控制理论等相关专业知识背景,从事光伏储能系统、微电网或可再生能源领域研究与仿真的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握离网光伏储能系统的完整建模方法与关键参数设计流程;② 深入理解Boost电路MPPT控制与双向DC-DC变换器双PI闭环控制的协同工作机制与实现细节;③ 通过Simulink仿真分析系统在光照突变、温度变化等动态扰动下的稳态特性、电压稳定性和能量管理性能;④ 为实际离网系统的控制器设计、参数整定及性能优化提供可靠的理论指导和仿真验证手段。; 阅读建议:建议结合提供的Simulink仿真模型同步学习,重点关注MPPT算法的实现逻辑、双PI控制器的参数整定方法以及系统在不同环境条件和负载变化下的响应特性,可在此基础上进一步探索多目标优化控制或智能控制策略的应用。

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧