Mysql部分 1 创建poll表,用于记录单选投票用户的数据 字段包括 id[ Autoincreace ] , ip , time , iid(用户选则的选项,int型) 写出create上述table的完整sql语句 drop table if exists poll; /*==============================================================*/ /* Table: poll */ /*==============================================================*/ create table poll ( id int unsigned not null auto_increment, ip varchar(15) not null, time datetime not null, iid int not null, primary key (id) ) 2 写出将一个选择2号选项的ip为127.0.0.1的用户在当前时间的投票记录到数据库的SQL insert into poll (ip,time,iid) values('127.0.0.1',now(),2); 3 写出满足下边条件的SQL语句 4 现在因为投票人数太多,网站时常出现too many connection的错误,请提供解决方案 drop table if exists item; /*==============================================================*/ /* Table: item */ /*==============================================================*/ create table item ( id int not null, descp varchar(200) not null, primary key (id) ); select A.ip,b.descp from poll A,item B where A.id=B.id limit 10
6 因为用户实在太多,所以又分配给你两台服务器,你会如何来安排这3台服务器? 8. 原有数据已经有很多重复ip的数据了,所以我们把它导出为一个txt,格式和上边的poll一致,用TAB键间隔,请写一段程序,删除ip有重复的记录,并统计每个投票选项的投票数 <?php //读取文本并放入数组 $apoll = file("c:\1.txt"); //对每一行数据进行分割,从而获取了一个二维数组 for ($i=0;$i<count($apoll);$i++) { $poll[$i] = split(" ",$apoll[$i]); } //获取IP、出现的次数数据 $arrIP=array(); for($i=0;$i<count($poll);$i++) { $arrIP[$poll[$i][1]]=isset($arrIP[$poll[$i][1]])?$arrIP[$poll[$i][1]]+1:1; } //获取选项、投票个数 $arrRes=array(); for($i=0;$i<count($poll);$i++) { if($arrIP[$poll[$i][1]]==1) { $arrRes[$poll[$i][3]]=isset($arrRes[$poll[$i][3]])?$arrRes[$poll[$i][3]]+1:1; } } var_dump($arrRes); ?> mysql5.0测试版:
/*========================得到测试数据c: .txt=========*/ SELECT * into outfile 'c: .txt' FROM `testok`; /*========================载入临时表=========*/ create TABLE phpinterview.testok(id int,ip varchar(15),time datetime,iid int); LOAD DATA INFILE 'c: .txt' into table testok; /*=========================删除ip有重复的记录=========*/ delete A from testok A,(select ip from testok B group by ip having count(*) >1) B where A.ip=B.ip /*================统计每个投票选项的投票数==============================*/ select iid,count(*) from testok B group by B.iid |