mysql按指定顺序排序

2017-5-28 寒川 网页编程

直接上语句:

select * from tablename where id in(1,5,9,2,4) order by  find_in_set(id,'1,5,9,2,4');
select * from tablename where id in(1,5,9,2,4) order by substring_index('1,5,9,2,4',id,1);
select * from a tablename a in(1,5,9,2,4) order by field(id,1,5,9,2,4)

标签: mysql order 排序

评论(0) 浏览(3080)

MySQL一次查询所有分类前N条记录

2016-4-4 寒川 网页编程

遇到这么一个需求,需要查询所有分类的文章记录,同时要求各分类的前N条,文章的数据表大概如下:

id:文章ID

category_id:分类ID

title:标题

……

其它字段等。

现在要求的就是各分类的前N条记录,此处设N为10,MySQL语句如下:

SELECT a.* FROM article a
WHERE 10>=(
SELECT COUNT(*) FROM article b
WHERE a.category_id=b.category_id AND a.id<=b.id)
ORDER BY a.category_id,a.id desc

标签: mysql sql

评论(0) 浏览(5322)

php利用curl登录页面并post提交数据上传文件

2015-11-26 寒川 网页编程

好久没写博客了,不知道的人或许会以为博客已经停止更新了,其实不然,确实最近比较忙。偶尔有空也只是上来删删一些垃圾留言。今天特地总结一下php的curl,显示用curl登录目标网站,接着携带cookie提交数据,用post方式提交,接着再上传一张本地图片。贴出这比较low的代码备用。闲话就不多说了,下面看招:

<?php
function login(){
	$url = 'http://xx.com/login.php';//登录地址
	$data = array(
		'username'=>'用户',//用户名,注意与原表单一致
		'password'=>'password'//用户密码,注意与原表单一致
	);
	$cookie_file = tempnam('./tmp','cookie');
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');  
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
	curl_setopt($ch, CURLOPT_MAXREDIRS, 1);  
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
	curl_setopt($ch, CURLOPT_AUTOREFERER, 1);  
	curl_setopt($ch, CURLOPT_POST, 1);  
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);  
	curl_exec($ch);  
	curl_close($ch);
	return $cookie_file;
}

function post(){
	$data = array(
		'name'=>1,//注意与原表单一致
		'test'=>2,//注意与原表单一致
	);
	$cookie = login();
	$url="http://xx.com/xx.php";//数据提交地址
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);  
	$str = curl_exec($ch);  
	curl_close($ch);
	unlink($cookie);
	return $str;
}


function uploadfile(){
	$cookie = login();
	$fields['data'] = 'data';//注意与原表单一致
	$fields['file'] = '@/www/web/xx.jpg;type=image/jpeg;filename=xx.jpg';//注意与原表单一致
	$url='http://xx.com/upload.php';//数据提交地址
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch,CURLOPT_REFERER,'http://59.151.121.119:8082/mss/uploadHkrtImage.jhtml');
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);  
	$str =  curl_exec($ch);  
	curl_close($ch);
	unlink($cookie);
	return $str;
}
具体使用代码的时候记得注释部分修改成自己的。

标签: php curl 模拟登陆 cookie curl上传

评论(0) 浏览(5635)

smarty使用小总结

2014-7-7 寒川 网页编程

最近项目中使用到了smarty,先总结一点常用的功能,以备不时之需。

1、smarty循环计次:


{foreach from=$variable key=key name=loop iteam=value}
    {$variable|@count}     // 获取数组长度
    {$smarty.foreach.loop.index}    // 获取当前循环数组元素下标,以0开始
    {$smarty.foreach.loop.iteration}    // 获取当前循环次数,以1开始
    {$smarty.foreach.loop.first}    // 为true时,标记循环第一次执行
    {$smarty.foreach.loop.last}    // 为true时,标记循环最后一次执行
    {$smarty.foreach.loop.last}    // 为true时,标记循环最后一次执行
    {$smarty.foreach.loop.show}    // 当前是否显示
    {$smarty.foreach.loop.total}    // 循环次数
{/foreach}
2、smarty格式化日期:



{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}


标签: php smarty

评论(0) 浏览(8366)

php分页函数

2014-1-2 寒川 网页编程

总结一下,我的简单的分页函数。
$p = isset($_GET['p'])?$_GET['p']:1;
echo _page(10,1100,$p,'page.php?');

function _page($pagesize,$num,$p,$url) {//每页显示数目,总记录,当前页数,返回分页url。
	$n=ceil($num/$pagesize);//页数
	$page ='<a title="首页" href="'.$url.'&p=1"><<</a>&nbsp;';
	$page .='<a title="上一页" href="'.$url.'&p='.($p-1<=1?1:$p-1).'"><</a>&nbsp;';
	$j = ceil($p/10);//当前组数
	$start = $j-1?($j-1)*10:1;
	$end = $n<=10?$n:$j*10;
	for($i=$start;$i<=$end;$i++) {
		if($i==$p) {
			$page .='<a>'.$i.'</a>&nbsp;';
		}else{
			$page .='<a title="第'.$i.'页" href="'.$url.'&p='.$i.'">'.$i.'</a>&nbsp;';
		}
	}
	$page .='<a title="下一页" href="'.$url.'&p='.($p+1>=$n?$n:$p+1).'">></a>&nbsp;';
	$page .='<a title="末页" href="'.$url.'&p='.($n?$n:1).'">>></a>';
	return $page;
}

标签: php 分页函数

评论(1) 浏览(6612)

乱炖web编程

2013-12-1 寒川 网页编程

之所以称之为乱炖,是因为此文未经过任何整理,仅总结些常用的内容。防止以后忘记又到处乱找。

1、jquery Ajax post提交数据:


$.post("url.php", {content:"内容一",content2:"内容二"},
	function(data){
		alert(data);//data为url.php post后返回内容
	},'html');
2、mysql设置随机整数:



update `table` set `field`=floor(1+rand()*100)#将table表中的field记录跟新为1~100的随机数。
3、mysql从一个表插入数据到别的表中:



insert into `table1`(`table1_field1`,`table1_field2`) select `table2_field1`,"table1的field2为固定值" from `table2`;


标签: mysql jquery ajax

评论(2) 浏览(7967)

mysql insert插入语句性能优化

2013-10-27 寒川 网页编程

最近下载了一个2000多万的mssql数据库备份文件,然后用软件将其转为mysql数据库,转过来大约3个G左右,数据占用磁盘量不大,但是数据条数还是挺多的。而且因为是从mssql转过来的缘故,全都是text类型,且除了id意外,没任何索引。如果直接用php来查询这些数据,估计没几分钟甚至几十分钟的时间是查不出任何东西的。于是乎想到了mysql分表。分表的时候是采用hash按照某个字段分的,加之自己略懂一点php,于是乎我按照自己的想法写了一个php的分表小代码:读取n条记录,php处理好后分别插入个分表中。2000万的数据,可不是开玩笑滴,那家伙,一秒钟转存100条记录都要好几秒钟。经分析,读取记录还算比较快,但是插入貌似有点慢了。于是引出了博文标题,mysql insert查询语句性能优化。

    究竟如何对insert语句性能优化呢?百度了一下,在插入语句之前和之后分别加上“START TRANSACTION;”和“COMMIT;”,不含引号,问题就得以解决了。现在插入速度那是相当快,一次插入一两千条数据,跟玩似的。注:在“START TRANSACTION;”和“COMMIT;”之间的插入语句类似为:INSERT INTO `table` ( `id`, `content`) VALUES (null, 'content') ,(null, 'content'), (null, 'content');

标签: mysql insert插入 千万级

评论(0) 浏览(6349)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap