郭宇翔的博客
PHP
IP在线查询位置及转换存储
五 3rd
最近在做一个私密聊天的客户端,顺便研究了一下在线查询IP地理位置,基于新浪IP地址信息数据库共享接口,同时研究了关于IP地址在数据库中转存为数值类型的方法,和大家进行分享,基于PHP实现,大家可以举一反三。
接口地址:http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=需要查询的ip地址
使用方法(返回Json并解析处理):
$url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip;
$message = json_decode(file_get_contents($url),true);
if (!empty($message))
{
return $message['province'].$message['city'].$message['district'].$message['isp'];
}
else return '未知地点';
其中返回的各个参数可以自己删减显示,
新浪微博API使用user_timeline获取用户原创微博
十二 25th
自己的微博http://t.yourtion.com已经荒废好一段时间了,前段时间把Pagecookery升级到0.9.8,支持了新浪微博的同步导入和发布,但是一直没有去弄,趁着有时间,稍微测试和改进了一下他的新浪微博同步部分,只同步原创微博部分,和大家交流一下,大家可以举一反三自己测试,更加熟悉新浪微博的API。
Pagecookery的微博同步是通过Oauth认证,之后使用json进行数据的抓取,对于抓取用户微博使用user_timeline的接口,也就是https://api.weibo.com/2/statuses/user_timeline.json。我看来一下接口文档,请求参数里面有一个:feature,是用来过滤请求的类型(过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。)由于默认是0,所以会抓取全部微博。
改造方法,在请求json的时候带上feature参数,可以使用https://api.weibo.com/2/statuses/user_timeline.json?feature=1。但是我这样改造没有成功,因为他的抓取依赖oauth->get的类,我在类中加入参数$param['feature']=1;这样抓取时就可以过滤掉非原创的成分。
MySQL外键使用总结
七 21st
最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要维护表间的关联··研究了一下MySQL的外键。
(1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持外键约束
(2)外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;
Mysql插入记录后返回该记录ID
七 15th
最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表。研究了一番决定使用Mysql提供了一个LAST_INSERT_ID()的函数。
LAST_INSERT_ID() (with no argument) returns the first automatically generated value that was set for an AUTO_INCREMENT column by the most recently executed INSERT or UPDATE statement to affect such a column. For example, after inserting a row that generates an AUTO_INCREMENT value, you can get the value like this:
mysql> SELECT LAST_INSERT_ID(); -> 195
简单说来,就是这个函数将返回插入的那条记录在表中自增的那个字段的值,一般我们都给那个自增字段命名为ID。这样就可以返回刚插入的记录的ID值了。
用PHP获取一年中每星期的开始结束日期
五 20th
最近项目中需要做个提交周报的功能,需要知道指定周数的开始日期和结束日期,以便处理其他业务。以下是一段通过PHP来获取一年中的每星期的开始日期和结束日期的代码,与大家分享。
以下是一段通过PHP来获取一年中的每星期的开始日期和结束日期的代码。
function get_week($year) {
$year_start = $year . "-01-01";
$year_end = $year . "-12-31";
$startday = strtotime($year_start);
if (intval(date('N', $startday)) != '1') {
$startday=strtotime("nextmonday",strtotime($year_start)); //获取年第一周的日期
}
$year_mondy = date("Y-m-d", $startday); //获取年第一周的日期
$endday = strtotime($year_end);
if (intval(date('W', $endday)) == '7') {
$endday=strtotime("lastsunday",strtotime($year_end));
}
$num = intval(date('W', $endday));
for ($i = 1; $i <= $num; $i++) {
$j = $i -1;
$start_date = date("Y-m-d", strtotime("$year_mondy $j week "));
$end_day = date("Y-m-d", strtotime("$start_date +6 day"));
$week_array[$i] = array (
str_replace("-", ".", $start_date), str_replace("-", ".", $end_day));
}
return $week_array;
}
函数get_week()通过传入参数$year年份,获取当年第一天和最后一天所在的周数,计算第一周的日期,通过循环获取每一周的第一天和最后一天的日期。最后返回是一个数组。
想得到指定周数的开始日期和结束日期,比如2011年第18周的开始日期和结束日期,代码如下:
PHP连接Access数据库常见错误及解决方法
五 10th

最新评论