第一题:计算某个表新插入记录的id值(id为主键),不用mysql本身的自增id策略而采用memcached,假设key值不会丢失,请指出方法2错在哪里。
方法1:
$lastInsertId = $memcacheObj->increment($key);
return $lastInsertId; 方法2:
$lastInsertId = $memcacheObj->get ($key);
$lastInsertId++;
$memcacheObj->set($key,$lastInsertId);
return $lastInsertId;
第二题:为这段代码找错$nowdate=date('Y-m-d');
$olddate=date('Y-m-d',strtotime('-7 days'));
$table=date('Ym');
$reltable='readerorder_master_'.$table;
$sql1="SELECT novelid, sendmoneydate, sum( jj_point ) AS jj FROM {$reltable} WHERE STATUS =2 AND sendmoneydate BETWEEN '".$olddate."' AND '".$nowdate."' GROUP BY novelid ORDER BY jj DESC limit 1,500";
$DBM = new Net_Config_Database(Net_Config_Database::vip_moneyMaster);
$query1=$DBM->query($sql1);
$novelIDs = array();
while($relult1 = $DBM->fetch_array($query1)){
$novelIDs[]=$relult1['novelid'];
}
$stronglyIndex1 = array();
$nums=0;
foreach($novelIDs as $value){
$sql2="SELECT a.authorid,a.authorname,n.novelname,n.novelid, ebookurl as coverImg ,n.vip_flag
FROM novelinfo n,author a,novel_class_1 b
WHERE n.authorid=a.authorid and n.novelid = b.novelid and b.yc in(1,2) and xx in(2,3) and n.vip_flag=1 and n.vip_month_flag=0
AND n.novelid={$value}";
$query = mysql_query($sql2, $connect);
$result2 = mysql_fetch_array($query);
if($result2['vip_flag'] == 1 && $nums < 10){
$stronglyIndex1[] = $result2;
$nums++;
}
}
方法1:
$lastInsertId = $memcacheObj->increment($key);
return $lastInsertId; 方法2:
$lastInsertId = $memcacheObj->get ($key);
$lastInsertId++;
$memcacheObj->set($key,$lastInsertId);
return $lastInsertId;
第二题:为这段代码找错$nowdate=date('Y-m-d');
$olddate=date('Y-m-d',strtotime('-7 days'));
$table=date('Ym');
$reltable='readerorder_master_'.$table;
$sql1="SELECT novelid, sendmoneydate, sum( jj_point ) AS jj FROM {$reltable} WHERE STATUS =2 AND sendmoneydate BETWEEN '".$olddate."' AND '".$nowdate."' GROUP BY novelid ORDER BY jj DESC limit 1,500";
$DBM = new Net_Config_Database(Net_Config_Database::vip_moneyMaster);
$query1=$DBM->query($sql1);
$novelIDs = array();
while($relult1 = $DBM->fetch_array($query1)){
$novelIDs[]=$relult1['novelid'];
}
$stronglyIndex1 = array();
$nums=0;
foreach($novelIDs as $value){
$sql2="SELECT a.authorid,a.authorname,n.novelname,n.novelid, ebookurl as coverImg ,n.vip_flag
FROM novelinfo n,author a,novel_class_1 b
WHERE n.authorid=a.authorid and n.novelid = b.novelid and b.yc in(1,2) and xx in(2,3) and n.vip_flag=1 and n.vip_month_flag=0
AND n.novelid={$value}";
$query = mysql_query($sql2, $connect);
$result2 = mysql_fetch_array($query);
if($result2['vip_flag'] == 1 && $nums < 10){
$stronglyIndex1[] = $result2;
$nums++;
}
}
2. 只看出来三个错误
第一个是,表名是月份,如果当前是1号的话,那么-7days前一个月的记录就找不到了。
第二个是,xx是什么字段?
第三个是,if($result2['vip_flag'] == 1 && $nums < 10)
只要能找到记录$result2['vip_flag']就是1,所以if($result2)就够了。
另外,既然$nums < 10才需要把结果追加,那么>=10的时候就应该break