MySQL UPDATE REPLACE语句的使用
UPDATE tables SET name = REPLACE(name,'a','b');
tables为表名,name为字段名,a为原始内容,b为替换为。
更新tables表中name字段中数据a为b
UPDATE tables SET name = REPLACE(name,'a','b');
tables为表名,name为字段名,a为原始内容,b为替换为。
更新tables表中name字段中数据a为b
比较简单的判断方式,直接查询域名是否存在dns……
if(IS_POST){
$sld=I('sld');
$tld=I('tld');
$domain=$sld.$tld;
$response = @dns_get_record($domain, DNS_ALL);
if(empty($response)){
echo "<H2 style='color:green;' >Domain $name_domain is available.</H2>";
}else{
echo "<H2 style='color:red;'>Domain $name_domain has taken.</H2>";
}
} 我尝试在DirectAdmin中创建Let's Encrypt免费SSL证书时出错。返回如下:
Cannot Execute Your Request
Details
Getting challenge for parniagroup.com from acme-server...
User let's encrypt key has been found, but not registered. Registering...
Account registration error. Response: HTTP/1.1 100 Continue
Expires: Wed, 03 Aug 2016 08:08:26 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
HTTP/1.1 400 Bad Request
Server: nginx
Content-Type: application/problem+json
Content-Length: 265
Boulder-Request-Id: vdS0ublv2yTS3g8BkAW4mjM9f-HCiYV6DgYrfCkaLqI
Replay-Nonce: QUnGB2x_ZY1sJRrGG3MgS9fwtegzDawR8xj1uJ4E50o
Expires: Wed, 03 Aug 2016 08:08:27 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Wed, 03 Aug 2016 08:08:27 GMT
Connection: close
{
"type": "urn:acme:error:malformed",
"detail": "Provided agreement URL [https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf] does not match current agreement URL [https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf]",
"status": 400
}.
if(IS_POST){
$rqstart = I('rqstart');
$rqend = I('rqend');
$begintime = strtotime($rqstart. ' 00:00:00');
$endtime = strtotime($rqend. ' 23:59:59');
//日期范围内查询条件
$map['billing_time'] = array(array('EGT', $begintime), array('ELT', $endtime));
$alipay = $Billing->where($map)->where(array('billing_pay_manner'=>'alipay'))->sum('billing_price');
$weixinpay = $Billing->where($map)->where(array('billing_pay_manner'=>'weixinpay'))->sum('billing_price');
//组装数据
if($weixinpay>0 or $alipay>0){
$data=array("alipay"=>"$alipay","weixinpay"=>"$weixinpay");
$this->ajaxReturn($data);
}else{
$data="-1";
$this->ajaxReturn($data);
}
} MAC安装完MySQL后在终端无法和Linux一样简单的用 "msyql" 登入管理,可以通过以下设置简化。
MySQL安装的位置在 /usr/local/mysql
设置一个别名即可:
$alias mysql='/usr/local/mysql/bin/mysql'
现在就可以和Linux一样通过命令管理,如:
$mysql -u root -p
最终目的实现以http://www.fl900.com/product/lists/1-0-0-1.html这样的URL形式且支持分页。
路由配置:
'/^product\/lists\/(\d+)-(\d+)-(\d+)-(\d+)$/' => 'Product/lists?id=:1&aid=:2&sid=:3&p=:4',
修正Library\Think\Page.class.php分类以支持路由
//在23行,修改访问修饰符private为public
public $url='';
//在70行,防止经过传参后会出现问题urlencode('[PAGE]')转为小写,修改为
$this->url = str_replace(strtolower(urlencode('[PAGE]')), $page, $this->url);//开启URL不区分大小写时处理
return str_replace(urlencode('[PAGE]'), $page, $this->url);
//在80行,修正为以下实现自定义URL
/* 生成URL */
if(empty($this->url)){
$this->parameter[$this->p] = '[PAGE]';
$this->url = U(ACTION_NAME, $this->parameter);
}
//使用示例
$Page = new \Think\Page($count,15);// 实例化分页类 传入总记录数和每页显示的记录数(25)
$page_tpl = urlencode('[PAGE]');
$Page->url = U("Product/list/{$this->id}-{$this->aid}-{$this->sid}-{$page_tpl}");
$show = $Page->show();转载:http://www.thinkphp.cn/topic/22114.html
对于用过smarty做过php开发的朋友来说,应该都知道在smarty模板里面判断foreach循环是否是最后一个可以$smarty.foreach.name.last来判断循环是否到了最后一条记录,在thinkphp的模板中常见的循环是volist,但是volist的各种属性中并没有直接判断最后一条记录的属性,那么在thinkphp中如何判断呢?下面的代码可以实现ThinkPHP中volist断最后一条记录。
举例代码如下:
<volist name='lists' id='list'> <li <if condition="$i eq count($lists)">class="last"</if>> <a href="http://www.cnweed.com/">野草博客</a> </li> </volist>
转载:http://www.jb51.net/article/51718.htm
GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
某个员工信息表结构和数据如下:
id name dept salary edlevel hiredate 1 张三 开发部 2000 3 2009-10-11 2 李四 开发部 2500 3 2009-10-01 3 王五 设计部 2600 5 2010-10-02 4 王六 设计部 2300 4 2010-10-03 5 马七 设计部 2100 4 2010-10-06 6 赵八 销售部 3000 5 2010-10-05 7 钱九 销售部 3100 7 2010-10-07 8 孙十 销售部 3500 7 2010-10-06
例如,我想列出每个部门最高薪水的结果,sql语句如下:
SELECT DEPT, MAX(SALARY) AS MAXIMUM FROM STAFF GROUP BY DEPT
查询结果如下:
DEPT MAXIMUM 开发部 2500 设计部 2600 销售部 3500
解释一下这个结果:
1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
例如,查询每个部门的总的薪水数:
SELECT DEPT, SUM( SALARY ) AS total FROM STAFF GROUP BY DEPT
查询结果如下:
DEPT total 开发部 4500 设计部 7000 销售部 9600
将 WHERE 子句与 GROUP BY 子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。
例如,查询公司2010年入职的各个部门每个级别里的最高薪水
SELECT DEPT, EDLEVEL, MAX( SALARY ) AS MAXIMUM FROM staff WHERE HIREDATE > ’2010-01-01′ GROUP BY DEPT, EDLEVEL ORDER BY DEPT, EDLEVEL
查询结果如下:
DEPT EDLEVEL MAXIMUM 设计部 4 2300 设计部 5 2600 销售部 5 3000 销售部 7 3500
注意:在SELECT语句中指定的每个列名也在GROUP BY子句中提到。未在这两个地方提到的列名将产生错误。
GROUP BY子句对DEPT和EDLEVEL的每个唯一组合各返回一行
在GROUP BY子句之后使用HAVING子句可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY子句后面包含一个HAVING子句。HAVING子句可包含一个或多个用AND和OR连接的谓词。每个谓词将组特性(如AVG(SALARY))与下列之一进行比较:
例如:寻找雇员数超过2个的部门的最高和最低薪水:
SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUM FROM staff GROUP BY DEPT HAVING COUNT( * ) >2 ORDER BY DEPT
查询结果如下:
DEPT MAXIMUM MINIMUM 设计部 2600 2100 销售部 3500 3000
例如:寻找雇员平均工资大于3000的部门的最高和最低薪水:
SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUM FROM staff GROUP BY DEPT HAVING AVG( SALARY ) >3000 ORDER BY DEPT
查询结果如下:
DEPT MAXIMUM MINIMUM
销售部 3500 3000
转载:https://blog.phpha.com/backup/archives/353.html
thinkphp volist循环嵌套if标签判断
今天用volist循环嵌套if标签判断的时候,if判断不能成功,报错,如下示例:
<volist name="list" id="vo"> <volist name="slist" id="s"> <if condition="$s.sid eq $vo.id"> 内容。。。。。 </if> </volist> </volist>
如果if语句像上面那样写,数据永远也取不出来,因为condition里面写的是PHP原生代码,所以如果是数组要换成中括号的写法,将IF语里的condition表达式换成:$s[‘id’] eq $vo.sid 或者:$s[‘id’] eq $vo[‘sid’],当前的volist的值可不用换成PHP原生数组的形式,上一级的换就OK,也可两个都换成原生数组的形式进行比较。以下是正确代码:
<volist name="list" id="vo"> <volist name="slist" id="s"> <if condition="$s.sid eq $vo['id']"> //或者<if condition="$s['sid'] eq $vo['id']"> 内容。。。。。 </if> </volist> </volist>
转载:http://www.web-fish.com/program/535.html
var time_range = function (beginTime, endTime, nowTime) {
var strb = beginTime.split (":");
if (strb.length != 2) {
return false;
}
var stre = endTime.split (":");
if (stre.length != 2) {
return false;
}
var strn = nowTime.split (":");
if (stre.length != 2) {
return false;
}
var b = new Date ();
var e = new Date ();
var n = new Date ();
b.setHours (strb[0]);
b.setMinutes (strb[1]);
e.setHours (stre[0]);
e.setMinutes (stre[1]);
n.setHours (strn[0]);
n.setMinutes (strn[1]);
if (n.getTime () - b.getTime () > 0 && n.getTime () - e.getTime () < 0) {
return true;
} else {
alert ("当前时间是:" + n.getHours () + ":" + n.getMinutes () + ",不在该时间范围内!");
return false;
}
}
time_range ("21:30", "23:30", "3:22");效果

var time_range = function (beginTime, endTime) {
var strb = beginTime.split (":");
if (strb.length != 2) {
return false;
}
var stre = endTime.split (":");
if (stre.length != 2) {
return false;
}
var b = new Date ();
var e = new Date ();
var n = new Date ();
b.setHours (strb[0]);
b.setMinutes (strb[1]);
e.setHours (stre[0]);
e.setMinutes (stre[1]);
if (n.getTime () - b.getTime () > 0 && n.getTime () - e.getTime () < 0) {
return true;
} else {
alert ("当前时间是:" + n.getHours () + ":" + n.getMinutes () + ",不在该时间范围内!");
return false;
}
}
time_range ("21:30", "23:30"); 下载:wget http://mysqltuner.pl/ -O mysqltuner.pl
运行:perl mysqltuner.pl 结果:
>> MySQLTuner 1.4.0 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
[OK] Currently running supported MySQL version 5.5.41-0+wheezy1
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in InnoDB tables: 1M (Tables: 11)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 11
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 47s (113 q [2.404 qps], 42 conn, TX: 19K, RX: 7K)
[--] Reads / Writes: 100% / 0%
[--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
[OK] Maximum possible memory usage: 597.8M (60% of installed RAM)
[OK] Slow queries: 0% (0/113)
[OK] Highest usage of available connections: 0% (1/151)
[OK] Key buffer size / total MyISAM indexes: 16.0M/99.0K
[!!] Query cache efficiency: 0.0% (0 cached / 71 selects)
[OK] Query cache prunes per day: 0
[OK] Temporary tables created on disk: 25% (54 on disk / 213 total)
[OK] Thread cache hit rate: 97% (1 created / 42 connections)
[OK] Table cache hit rate: 24% (52 open / 215 opened)
[OK] Open file limit used: 4% (48/1K)
[OK] Table locks acquired immediately: 100% (62 immediate / 62 locks)
[OK] InnoDB buffer pool / data size: 128.0M/1.2M
[OK] InnoDB log waits: 0
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Enable the slow query log to troubleshoot bad queries
Variables to adjust:
query_cache_limit (> 1M, or use smaller result sets) 第一,需要添加一个 php 文件来实现删除功能,文件添加到:ueditor\php\action_delete.php 代码内容:
<?php
/*---------------------------
* Flyヽ
* http://lfei.org
* 2016-02-04
* action_delete.php
* 删除 Ueditor 目录下的文件
*---------------------------*/
try {
//获取路径
$path = $_POST['path'];
$path = str_replace('../', '', $path);
$path = str_replace('/', '\\', $path);
//安全判断(只允许删除 ueditor 目录下的文件)
if(stripos($path, '\\ueditor\\') !== 0)
{
return '非法删除';
}
//获取完整路径
$path = $_SERVER['DOCUMENT_ROOT'].$path;
if(file_exists($path)) {
//删除文件
unlink($path);
return 'ok';
} else {
return '删除失败,未找到'.$path;
}
} catch (Exception $e) {
return '删除异常:'.$e->getMessage();
}第二,需要在ueditor\php\controller.php文件的switch中添加命令 deleteimage 的处理:
....
switch ($action) {
....
/* 删除图片命令处理 */
case 'deleteimage':
$result = include('action_delete.php');
break;
/* 在 default 之前添加 */
default:
$result = json_encode(array(
'state'=> '请求地址出错'
));
break;
}
....第三,在图片上添加删除按钮,需要修改 Js 文件:ueditor\dialogs\image\image.js
....
/* 在这两句之后添加 */
item.appendChild(img);
item.appendChild(icon);
/* 添加删除功能 */
item.appendChild($("<span class='delbtn' url='" + list[i].url + "'>✖</span>").click(function() {
var del = $(this);
try{
window.event.cancelBubble = true; //停止冒泡
window.event.returnValue = false; //阻止事件的默认行为
window.event.preventDefault(); //取消事件的默认行为
window.event.stopPropagation(); //阻止事件的传播
} finally {
if(!confirm("确定要删除吗?")) return;
$.post(editor.getOpt("serverUrl") + "?action=deleteimage", { "path": del.attr("url") }, function(result) {
if (result == "ok") del.parent().remove();
else alert(result);
});
}
})[0]);
/* 在这一句之前添加 */
this.list.insertBefore(item, this.clearFloat);
....第四,为删除按钮添加一个样式,修改文件:ueditor\dialogs\image\image.css在最底部添加如下代码:
/* 在线管理删除按钮样式 */
#online li .delbtn {
position: absolute;
top: 0;
right: 0;
border: 0;
z-index: 3;
color: #ffffff;
display: inline;
font-size: 12px;
line-height: 10.5px;
padding:3px 5px;
text-align: center;
background-color: #d9534f;
}效果如下:

转自:http://lfei.org/ueditor-manage-image-delete/