thinkphp 5.0怪异的事,$w->save($data) 不执行!

mikeccn 2017-10-17 03:54:47
thinkphp 5.0怪异的事,$w->save($data) 不执行!怎么回事呢?


$w = new \app\common\model\W;
$data = array();
$data['pid'] = $id;
$data['zid'] = '0';
log(' data: ');
log(var_export($data,true));
if($w->save($data)){
log(' sql ');
log($w::getLastSql());
}else{
log(' Err ');
log($w::getLastSql());
}



function log($txt="")
{
file_put_contents("log.txt", $txt ,FILE_APPEND);
}


经跟踪,只输出了:


data: array (
'pid' => '1',
'zid' => '0',
)
...全文
895 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunAyer 2017-10-25
  • 打赏
  • 举报
回复
为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录
cat_likk 2017-10-19
  • 打赏
  • 举报
回复
这是在model类里面的方法
Just_cl 2017-10-18
  • 打赏
  • 举报
回复
insert into tp_w ('pid','zid','rid') values (1,0,'x1')
你的这个sql,pid zid rid能用单引号的么,错误信息已经很明显,换成这个
insert into tp_w (`pid`,`zid`,`rid`) values (1,0,'x1')
mikeccn 2017-10-18
  • 打赏
  • 举报
回复
请问 Thinkphp 5.0 if(Db::execute($query)){ 这样的方式 跟踪sql错误的语句怎么写?
mikeccn 2017-10-18
  • 打赏
  • 举报
回复
引用 12 楼 qq_36802756 的回复:
tp5可以用save吗?还是楼主自己封装了的
tp5本来就可以用save的,不是我封装的。
qq_36802756 2017-10-18
  • 打赏
  • 举报
回复
tp5可以用save吗?还是楼主自己封装了的
mikeccn 2017-10-18
  • 打赏
  • 举报
回复
引用 10 楼 jordan102 的回复:
var_dump($res); 是什么
谢谢回复,以下这样子也是只输出ok,没输出res: 和 var_export($res,true) 这个和 var_dump($res);类似的。

                           try{
					log(' ok ');
					$res = Db::execute($query);
                
				        log(" res: ");
			    	        log(var_export($res,true));    
					
					if($res){
						log(" 插入成功! ");
					}else{
						log(" 插入失败! ");
					}
				} catch(\Exception $e) {
					log(' Err: ' . $e->getMessage());
				}
一起混吧 2017-10-18
  • 打赏
  • 举报
回复
var_dump($res); 是什么
mikeccn 2017-10-18
  • 打赏
  • 举报
回复
引用 8 楼 jordan102 的回复:
你可以在try{ 后面单步输出一下确认程序进入try里面了
谢谢版主回复!

                                try{
                                        log(' ok ');
                                        $res = Db::execute($query);

					if($res){
						log(" 插入成功! ");
					}else{
						log(" 插入失败! ");
					}
				} catch(\Exception $e) {
					log(' Err: ' . $e->getMessage());
				}
这样子是有输出ok的,但是后面的就都没输出了。
一起混吧 2017-10-18
  • 打赏
  • 举报
回复
` 在英文状态下Tab 键正上方那个键输入 你可以在try{ 后面单步输出一下确认程序进入try里面了
mikeccn 2017-10-18
  • 打赏
  • 举报
回复
引用 6 楼 Just_cl 的回复:
首先`这个符号在esc下面英文键盘就行,其次tp5的手册刚看了下 Db::execute();这个函数是有返回值的,根据返回值去判断是否执行成功
//执行插入操作
    $affected = Db::execute($sql);            

    //判断是否执行成功
    if ($affected){
        $this->success('插入成功!',url('ok'));
    }else{
        $this->error('插入失败');
    }
这是从手册上copy的,建议多看看手册
谢谢回复! 但是我这样写,还是既没输出成功,也没输出失败!

try{
					$res = Db::execute($query);
					
					if($res){
						log(" 插入成功! ");
					}else{
						log(" 插入失败! ");
					}
				} catch(\Exception $e) {
					cjqtxt(' Err: ' . $e->getMessage());
				}
Just_cl 2017-10-18
  • 打赏
  • 举报
回复
首先`这个符号在esc下面英文键盘就行,其次tp5的手册刚看了下 Db::execute();这个函数是有返回值的,根据返回值去判断是否执行成功
//执行插入操作
    $affected = Db::execute($sql);            

    //判断是否执行成功
    if ($affected){
        $this->success('插入成功!',url('ok'));
    }else{
        $this->error('插入失败');
    }
这是从手册上copy的,建议多看看手册
mikeccn 2017-10-18
  • 打赏
  • 举报
回复
$query = "insert into tp_w (`pid`,`zid`,`rid`) values (1,0,'x1')"; try{ Db::execute($query); } catch(\Exception $e) { cjqtxt(' Err: ' . $e->getMessage()); } sql语句拷贝到navicat执行没问题,但是不知为什么 Db::execute($query); 好像没执行,后面的没输出了
mikeccn 2017-10-18
  • 打赏
  • 举报
回复
引用 3 楼 Just_cl 的回复:
insert into tp_w ('pid','zid','rid') values (1,0,'x1')
你的这个sql,pid zid rid能用单引号的么,错误信息已经很明显,换成这个
insert into tp_w (`pid`,`zid`,`rid`) values (1,0,'x1')
谢谢,那个有点歪歪扭扭的引号要怎么输出?每次我都只能从别处copy。
mikeccn 2017-10-17
  • 打赏
  • 举报
回复
没人回答我 我改用了

$query = "insert into tp_w ('pid','zid','rid') values ($pid,$zid,'$rid')";
log(' query ' . $query);
if(Db::execute($query)){ ...

insert into tp_w ('pid','zid','rid') values (1,0,'x1')
怎么这条sql语句会报错:[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''pid','zid','rid') values (1,0,'x1')' at line 1

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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