这是一个创建于 3187 天前的主题,其中的信息可能已经有所发展或是发生改变。
UPDATE `user` SET `plan` = 'free',`u` = '0',`d` = '0',`transfer_enable` = '300' WHERE `user`.`u` + `d` >= 'transfer_enable' AND `plan` = 'pro'
大概意思就是当条件成立把 plan 为 pro 的变成 free , sql 自己可以摸索着这样写
但是 php 这样写
<?php
require_once '../lib/config.php';
$info = $db -> select('user',"*",[
"plan" => 'pro'
]);
for($i=0;$i<count($info);$i++){
if($info[$i]['u'] + $info[$i]['d'] >= $info[$i]['transfer_enable']){
$db -> update('user',[
"u"=>0,
"d"=>0,
"transfer_enable"=>1073741824,
"plan"=>'free'
]);
}
}
执行完了就把全部表都改了,我知道要添加 where 条件,不知如何修改,请不吝赐教。
4 条回复 • 2015-10-17 14:34:46 +08:00
|
|
1
gdtv 2015-10-17 00:08:30 +08:00 1
30 分钟过去了没人回答,难道这道题有什么坑? 因为你$db -> update 的时候没有 where 条件,所以全都改了。 我不知你的$db 对象是怎样封装的,猜测大概可以这样写:
require_once '../lib/config.php'; $db -> query("UPDATE `user` SET `plan` = 'free',`u` = '0',`d` = '0',`transfer_enable` = '300' WHERE `user`.`u` + `d` >= 'transfer_enable' AND `plan` = 'pro' ");
|
|
|
2
juzi 2015-10-17 07:44:24 +08:00 via Android
|
|
|
3
dsphper 2015-10-17 10:26:05 +08:00 1
链式 db 根据推测可以这么写: $db -> update('user',[ "u"=>0, "d"=>0, "transfer_enable"=>1073741824, "plan"=>'free' ])->where(['id'=>123]) || where('id=123');
|
|
|
4
juzi 2015-10-17 14:34:46 +08:00 via Android
|