update 语句:从一个表中更新另一个表的字段
update table_all a set a.phoneNo=b.phoneNo from table_new b where a.name =b.name
update table_all set table_all.phoneNo = (select table_new.phoneNo from table_new where table_all.name = table_new.name)
By admin
read moreupdate table_all a set a.phoneNo=b.phoneNo from table_new b where a.name =b.name
update table_all set table_all.phoneNo = (select table_new.phoneNo from table_new where table_all.name = table_new.name)
By admin
read more以下是他回忆当时的笔试题
一、
1、有如下HTML:
1)用js取得________方法取得该对象;
2)用________属性取得属性title的属性值;
3)用________方法取得属性sina_title的属性值;
2、php中对数组序列化和反序列化的函数分别是______和_______;
3、rawurlencode和urlencode函数的区别是__________________;
4、php中过滤HTML的函数是_______,转义的函数是____________;
5、写出用正则把HTML中的js脚本过滤掉;
6、SQL中LEFT JOIN的含义是______________;
如果有一个表tl_user存储学生ID和名字name,另外一个表tl_score存储学生ID、科目subject和成绩score(有的学生没有考试成绩),写出sql语句打印出学生名字和各科总成绩;
7、写出三个调用系统命令的函数;
8、josn处理数组的函数是;
9、php中判断变量是否被设置是函数是_______;判断是否为空的是___________;
10、error_reporting(“E_ALL”)和ini_set(“display_errors”, “on”)的区别_________;
11、PHP写出显示客户端IP的预定义变量________;提供来路url的是__________;
12、php把utf-8转换成gbk的函数是___________;
13、php中分割字符串成数组的函数__________,连接数组成字符串的是_______;
14、php中类的静态方法怎么使用_____________________________________;
二、
1、如下错误:mysql server not go away,的原因是什么?(大概这是这样)
2、mysql的静态表和动态表的区别,MyISAM和InnoDB的区别.
3、$a = 1; $b = & $a;
unset($a),$b是否还是1,为什么?
unset($b),$a是否还是1,为什么?
三、
1、写出至少三个函数,取文件名的后缀,如文件’/as/image/bc.jpg’,得到 jpg或者.jpg。
2、写一个函数,算出两个文件的相对路径如 $a = ‘/a/b/c/d/e.php’; $b = ‘/a/b/12/34/c.php’; 计算出 $b 相对于 $a 的相路径。
3、用二分法(也叫折半查找法)查找某元素,对像可以是有序数组。
$array = array(1,3,5,9,11,23,45,68,78,95,112,235,452);
function binary($array, $search){
原文 http://www.cnblogs.com/banruo/archive/2010/03/14/1685521.html
By admin
read more< ?php
/**
* 基本图片处理,用于完成图片缩入,水印添加
* 当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小
* 水印图可以设置跟背景的合并度
* Copyright(c) 2005 by ustb99. All rights reserved
* To contact the author write to {@link mailto:[email protected]}
@author 偶然
@version $Id: thumb.class.php,v 1.9 2006/09/30 09:31:56 zengjian Exp $
@package system
*/
/**
ThumbHandler
@access public
*/
/*
使用方法:
自动裁切:
程序会按照图片的尺寸从中部裁切最大的正方形,并按目标尺寸进行缩略
$t->setSrcImg(“img/test.jpg”);
$t->setCutType(1);//这一句就OK了
$t->setDstImg(“tmp/new_test.jpg”);
$t->createImg(60,60);
手工裁切:
程序会按照指定的位置从源图上取图
$t->setSrcImg(“img/test.jpg”);
$t->setCutType(2);//指明为手工裁切
$t->setSrcCutPosition(100, 100);// 源图起点坐标
$t->setRectangleCut(300, 200);// 裁切尺寸
$t->setDstImg(“tmp/new_test.jpg”);
$t->createImg(300,200);
*/
classThumbHandler
{
var$dst_img;// 目标文件
By admin
read morePHP生 成word文档的代码,这个是用来生产试卷的简单PHP代码
以下为引用的内容:试卷生成 difficulty.”
”; $cout.=” “.$row->content.”
”; }//while
?> ’; }
function save($path) {
print “”; $data = ob_get_contents();
ob_end_clean();
$this->wirtefile ($path,$data); }
function wirtefile ($fn,$data) {
$fp=fopen($fn,”wb”); fwrite($fp,$data); fclose($fp); } } /*——-word class End——-*/ $word=new word; $word->start(); echo $cout; $wordname=”word/”.time().”.doc”; $word->save($wordname);// 保存word并且结束. ?>
” target=_blank class=”unnamed1″>试卷已经生成,请点击这里查看
您输入的条件不足,请重新输入!
By admin
read more有朋友问到淘宝是怎么压缩js和css的,这里分享下。
我们使用的是 YUI Compressor:
The YUI Compressor is a JavaScript compressor which, in addition to removing comments and white-spaces, obfuscates local variables using the smallest possible variable name. This obfuscation is safe, even when using constructs such as ‘eval’ or ‘with’ (although the compression is not optimal is those cases) Compared to jsmin, the average savings is around 20%.
The YUI Compressor is also able to safely compress CSS files. The decision on which compressor is being used is made on the file extension (js or css)
By admin
read moreSCWS 是 Simple Chinese Words Segmentation 的缩写,即简易中文分词系统。
这是一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词。词是汉语的基本语素单位,而书写的时候不像英语会在词 之间用空格分开,所以如何准确而又快速的分词一直是中文分词的攻关难点。
SCWS 在概念上并无创新成分,采用的是自行采集的词频词典,并辅以一定程度上的专有名称、人名、地名、数字年代等规则集,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些中小型搜索引擎、关键字提取等场合运用。 SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK,UTF-8,BIG5 等汉字编码,切词效率高。
[推荐]首个搭载 SCWS 分词系统的中小型站内全文检索解决方案 – FTPHP!
以下为本人在win03平台下,php5.2.5+apache2.2.11平台下推荐的方法,特别的简单,用的是gbk的字库的
1.首先从 http://www.ftphp.com/scws/download.php 下载相关压缩包 .
php_scws.dll (1.1.1)
php_scws.dll 是由 ben 移植用于 Windows 平台下的 PHP 动态扩展库,请根据您使用的 php 版本下载,编译环境均为:VC6 x86 Thread Safe。
[ For PHP-4.4.x (20KB)] [ For PHP-5.2.x (20KB)] [ For PHP-5.3.x (20KB)] [ 详细安装说明] [ PHP扩展-API 文档]
XDB 词典文件
XDB 格式的词典文件,可用于 SCWS-1.x.x 和 PSCWS4,不可用于 PSCWS23。
此为通用词典文件,定制词典或其它服务请查看 服务支持 页面。
[ 简体中文 (GBK) (3.84MB, 28万词, 2010/03/19更新)]
By admin
read more比较IN()里面的数据 许多数据库服务器都只把IN()看作多个OR的同义词,因为它们在逻辑上是相等的。MYSQL不是这样的,它会对IN()里面的数据进行排序,然后用二分法查找个是否在列表中,这个算法的效率是O(Logn),而等同的OR子句的查找效率是O(n)。在列表很大的时候,OR子句就会变得慢得多。
这里的语句和Oracle数据库里是一样的。
By admin
read more一个内存释放的实例
CollectGarbage, 是IE的一个特有属性,用于释放内存的使用方法嘛应该是,将该变量或引用对象,设置为null或delete然后在进行释放动作 在 做CollectGarbage前,要必需清楚的两个必备条件:
引用
– 一个对象在其生存的上下文环境之外,即会失效。
– 一个全局的对象在没有被执用(引用)的情况下,即会失效。
========= 美丽的分割线 =========
//——————————————————— // JavaScript对象何时失效 //——————————————————— function testObject() { var _obj1 = new Object(); }
function testObject2() { var _obj2 = new Object(); return _obj2; }
// 示例1 testObject();
// 示例2 testObject2()
// 示例3 var obj3 = testObject2(); obj3 = null;
// 示例4 var obj4 = testObject2(); var arr = [obj4]; obj3 = null; arr = [];
在 这四个示例中: – “示例1”在函数testObject()中构造了_obj1,但是在函数退出时,它就已经离开了函数的上下文环境,因此_obj1失效了;- “示例2”中,testObject2()中也构造了一个对象_obj2并传出,因此对象有了“函数外”的上下文环境(和生存周期),然而由于函数的返回值没有被其它变量“持有”,因此_obj2也立即失效了;- “示例3”中,testObject2()构造的_obj2被外部的变量obj3持用了,这时,直到“obj3=null”这行代码生效时,_obj2才会因为引用关系消失而失效。 – 与示例3相同的原因,“示例4”中的_obj2会在“arr=[]”这行代码之后才会失效。
By admin
read morefunction cleanAndPaste(html) …{ // Remove all SPAN tags html = html.replace(/]>/gi, “” ); // Remove Class attributes html = html.replace(/<(w[^>]*) class=([^ |>]*)([^>])/gi, “<$1$3″) ; // Remove Style attributes html = html.replace(/<(w[^>]*) style=”([^”]*)”([^>])/gi, “<$1$3”) ; // Remove Lang attributes html = html.replace(/<(w[^>]*) lang=([^ |>]*)([^>])/gi, “<$1$3”) ; // Remove XML elements and declarations html = html.replace(/<??xml[^>]>/gi, “”) ; // Remove Tags with XML namespace declarations: html = html.replace(/]>/gi, “”) ; // Replace the html = html.replace(/ /, ” ” ); // Transform
By admin
read more一般,有2种方法可以导出doc文档,一种是 使用com,并且作为php的一个扩展库安装到服务器上,然后创建一个com,调用它的方法。安装过office的服务器可以调用一个叫 word.application的com,可以生成word文档,不过这种方式我不推荐,因为执行效率比较低(我测试了一下,在执行代码的时候,服务器 会真的去打开一个word客户端)。理想的com应该是没有界面的,在后台进行数据转换,这样效果会比较好,但是这些扩展一般需要收费。
第2种方法,就是用PHP将我们的doc文档内容直接写入一个后缀为doc的文件中即可。使用这种方法不需要依赖第三方扩展,而且执行效率较高。
word本身的功能还是很强大的,它可以打开html格式的文件,并且能够保留格式,即使后缀为doc,它也能识别正常打开。这就为我们提供了方便。但是 有一个问题,html格式的文件中的图片只有一个地址,真正的图片是保存在其他地方的,也就是说,如果将HTML格式写入doc中,那么doc中将不能包 含图片。那我们如何创建包含图片的doc文档呢?我们可以使用和html很接近的mht格式。
mht格式和html很类似,只不过在mht格式中,外部链接进来的文件,比如图片、Javascript、CSS会被base64进行编码存储。因此, 单个mht文件就可以保存一个网页中的所有资源,当然,相比html,它的尺寸也会比较大。
mht格式能被word识别吗?我将一个网页保存成mht,然后修改后缀名为doc,再用word打开,OK,word也可以识别mht文件,并且可以显 示图片。
好了,既然doc可以识别mht,下面就是考虑如何将图片放入mht了。由于html代码中的图片的地址都是写在img标签的src属性中,因此,只要提 取html代码中的src属性值,就可以获得图片地址。当然,有可能您获取到的是相对路径,没关系,加上URL的前缀,改成绝对路径就可以了。有了图片地 址,我们就可以通过file_get_content函数获取到图片文件的具体内容,然后调用base64_encode函数将文件内容编码成 base64编码,最后插入到mht文件的合适位置即可。
最后,我们有两种方法将文件发送给客户端,一种是先在服务器端生成一个doc文档,然后将这个doc文档的地址记录下来,最后,通过 header(“location:xx.doc”);就可以让客户端下载这个doc。还有一种是直接发送html请求,修改HTML协议的header 部分,将它的content-type设置为application/doc,将content-disposition设置为attachment,后 面跟上文件名,发送完html协议以后,直接将文件内容发送给客户端,也可以让客户端下载到这个doc文档。
实现
通过以上的原理介绍,相信大家应该对实现的过程有个初步的了解了,下面我给出一个导出函数,这个函数可以将HTML代码导出成一个mht文档,参数有3 个,其中后2个为可选参数 content:要转换的HTML代码 absolutePath: 如果HTML代码中的图片地址都是相对路径,那么这个参数就是HTML代码中缺少的绝对路径。 isEraseLink:是否去掉HTML代码中的超链接
返回值为mht的文件内容,您可以通过file_put_content将它保存成后缀名为doc的文件
这个函数的主要功能其实就是分析HTML代码中的所有图片地址,并且依次下载下来。获取到了图片的内容以后,调用MhtFileMaker类,将图片添加 到mht文件中。具体的添加细节,封装在MhtFileMaker类中了。
/**
* 根据HTML代码获取word文档内容
* 创建一个本质为mht的文档,该函数会分析文件内容并从远程下载页面中 的图片资源
* 该函数依赖于类MhtFileMaker
* 该函数会分析img标签,提取src的属性值。但是,src的属性值必须 被引号包围,否则不能提取
* @param string $content HTML内容
* @param string $absolutePath 网 页的绝对路径。如果HTML内容里的图片路径为相对路径,那么就需要填写这个参数,来让该函数自动填补成绝对路径。这个参数最后需要以/结束
* @param bool $isEraseLink 是 否去掉HTML内容中的链接
*/
function getWordDocument( $content,$absolutePath=“”,$isEraseLink=true )
{
$mht=new MhtFileMaker();
if ($isEraseLink)
$content=preg_replace(‘/(\s*.?\s)</a>/i‘,‘$1‘,$content); //去掉链接
$images=array();
By admin
read moreQ:我怎样强制主服务器阻塞更新直到从服务器同步?
A:使用下面的步骤:
1.在主服务器上,执行这些语句:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
记录SHOW语句的输出的日志名和偏移量。这些是复制坐标。2.在从服务器上,发出下面的语句,其中Master_POS_WAIT()函 数的参量是前面步骤中的得到的复制坐标值:
mysql> SELECT MASTER_POS_WAIT('log_name', log_offset);
SELECT语句阻塞直到从服务器达到指定的日志文件和偏移量。此时,从服务器与主服务器同步,语句返回。
3.在主服务器上,发出下面的语句允许主服务器重新开始处理更新:
mysql> UNLOCK TABLES;
来源:http://dev.mysql.com/doc/refman/5.1/zh/replication.html#replication-faq
By admin
read more默认情况,中继日志使用_host_name-relay-bin.nnnnnn_形 式的文件名,其中_host_name_是从服务器主机名,nnnnnn_是 序列号。用连续序列号来创建连续中继日志文件,从000001开始。从服务器跟踪索引文件中目前正 使用的中继日志。 默认中继日志索引文件名为_host_name-relay-bin.index。 默认情况,在从服务器的数据目录中创建这些文件。可以用–relay-log和–relay-log-index服 务器选项覆盖 默认文件名。参见6.8节,“复制启动选项”。
中继日志与二进制日志的格式相同,并且可以用mysqlbinlog读取。SQL线 程执行完中继日志中的所有事件并且不再需要之后,立即自动删除它。没有直接的删除中继日志的机制,因为SQL线程可以负责完 成。然而,FLUSH LOGS可以循环中继日志,当SQL线程删除日志时会有影响。
在下面的条件下创建新的中继日志:
·每次I/O线程启动时创建一个新的中继日志。
·当日志被刷新时;例如,用FLUSH LOGS或mysqladmin flush-logs。
·当当前的中继日志文件变得太大时。“太大”含义的确定方法:
omax_relay_log_size,如果max_relay_log_size> 0omax_binlog_size,如果max_relay_log_size= 0
从属复制服务器在数据目录中另外创建两个小文件。这些_状态文件_默认名为主master.info和relay-log.info。 它们包含SHOW SLAVE STATUS语句的输出所显示的信息(关于该语句的描述参见13.6.2节,“用 于控制从服务器的SQL语句”)。状态文件保存在硬盘上,从服务器关闭时不会丢失。下次从服务器启动时,读取这些文件 以确定它已经从主服务器读取了多少二进制日志,以及处理自己的中继日志的程度。
由I/O线程更新master.info文件。文件中的行和SHOW SLAVE STATUS显示的列的对应关系为:
行****描述1 文件中的行号 2Master_Log_File3 Read_Master_Log_Pos4Master_Host5Master_User6 密码(不由SHOW SLAVE STATUS显示)7Master_Port8Connect_Retry9 Master_SSL_Allowed10 Master_SSL_CA_File11 Master_SSL_CA_Path12Master_SSL_Cert13 Master_SSL_Cipher14Master_SSL_Key
由SQL线程更新relay-log.info文件。文件中的行和SHOW SLAVE STATUS显示的列的对应关系为:
行****描述1Relay_Log_File2Relay_Log_Pos3 Relay_Master_Log_File4 Exec_Master_Log_Pos
当备份从服务器的数据时,你还应备份这两个小文件以及中继日志文件。它们用来在恢复从服务器的数据后继续进行复制。如果丢失了中继日志但仍然有relay-log.info文 件,你可以通过检查该文件来确定SQL线程已经执行的主服务器中二进制日志的程度。然后可以用Master_Log_File和Master_LOG_POS选 项执行CHANGE MASTER TO来告诉从服务器重新从该点读取二进制日志。当然,要求二进制日志仍然在主服务器上。
如果从服务器正复制LOAD DATA INFILE语句,你应也备份该目录内从服务器用于该目的的任何SQL_LOAD-*文件。从 服务器需要这些文件继续复制任何中断的LOAD DATA INFILE操作。用–slave-load-tmpdir选项来指定目录的位置。如果未指 定, 默认值为tmpdir变量的值。
By admin
read more用EXPLAIN看MySQL的执行计划时经常会看到Impossible WHERE noticed after reading const tables这句话,意思是说MySQL通过读取“const tables”,发现这个查询是不可能有结果输出的。比如对下面的表和数据:
create table t (a int primary key, b int) engine = innodb;
insert into t values(1, 1);
insert into t values(3, 1);
执 行“EXPLAIN select * from t where a = 2”时就会输出“Impossible WHERE noticed after reading const tables”。
不明白所谓的“const tables”是什么意思,对MySQL在查询优化时竟然可以发现一个查询不可能输出结果更是感觉不可思议。按数据库中“传统”的做法,查询优化时只会访问模式定义和统计信息,而据我所知,数据库中使用的各种统计信息如EquiDepth、MaxDiff柱状图,MCV,属性的最大值、最小值等都不可能精确到能够断言在上述的表中不存在“a = 2”的记录。
今天看MySQL Internal手册时才总算弄明白,原来MySQL并没有什么神奇之处,这个Impossible WHERE noticed after reading const tables的结论并不是通过统计信息做出的,而是真的去实际访问了一遍数据后,发现确实没有“a = 2”的行才得出的。
当查询中对某个表指定了主键或非空唯一索引上的等值条件,从而使得最多只可能产生一条命中结果(只对该表而言)时,MySQL在EXPLAIN之前会优先根据这一条件查找出对应的记录,并用记录的实际值替换查询中所有用到来自该表的属性的地方。一个更复杂的例子如下:
explain select * from t as t1, t as t2 where t1.a = 1 and t2.a = t1.b + 1;
的输出结果为(由于排版关系省略了一些输出内容):
+----+...+-----------------------------------------------------+
| id | ... | Extra |
+----+...+-----------------------------------------------------+
| 1 | ... | Impossible WHERE noticed after reading const tables |
+----+...+-----------------------------------------------------+
MySQL 得出上述查询不会输出结果的步骤如下: 1、首先根据t1.a = 1条件找到一条记录(1,1); 2、将上述记录中b的值1替换查询中的 t1.b,即将上述查询转化为等价的“explain select 1, 1,t2.a, t2.b from t as t2 where t2.a = 1 + 1”; 3、优化器计算常量表达式的值,即计算1+1得出结果为2; 4、优化器根据t2.a = 2条件查找,发现没有命中记录; 5、优化器最终打断出上述查询不可能输出结果。
By admin
read morePHP基础002: 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法
PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和magic_quotes_runtime,这两个函数如果在 php.ini设置为ON的时候,就会为我们引用的数据碰到单引号’和双引号”以及反斜线 \ 是自动加上反斜线,帮我们自动转译符号,确保数据操作的正确运行,可是我们在php不同的版本或者不同的服务器配置下,有的 magic_quotes_gpc和magic_quotes_runtime设置为on,有的又是off,所以我们写的程序必须符合on和off两种情 况。那么magic_quotes_gpc和magic_quotes_runtime两个函数有什么区别呢?看下面的说明:
magic_quotes_gpc 作用范围是:WEB客户服务端; 作用时间:请求开始是,例如当脚本运行时.
magic_quotes_runtime 作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的; 作用时间:每次当脚本访问运行状态中产生的数据. 所以
magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据 magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据
例子说明:
$data1 = $_POST[‘aaa’];
$data2 = implode(file(‘1.txt’));
if(get_magic_quotes_gpc()){
//把数据$data1直接写入数据库 (自动转译)
}else{
$data1 = addslashes($data1);
//把数据$data1写入数据库,用函数(addslashes()转译)
}
if(get_magic_quotes_runtime()){
//把数据$data2直接写入数据库(自动转译)
//从数据库读出的数据要经过一次stripslashes()之后输出stripslashes()的作用是去掉:\ ,和addslashes()作用相反
}else{
$data2 = addslashes($data2);
//把数据$data2写入数据库
//从数据库读出的数据直接输出
}
最关键的区别是就是上面提到的2点:他们针对的处理对象不同 magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据 magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据
在这里顺便在提几个想关联的函数:
set_magic_quotes_runtime(): 设置magic_quotes_runtime值. 0=关闭.1=打开.默认状态是关闭的.可以通过 echo phpinfo(); 查看magic_quotes_runtime
get_magic_quotes_gpc(): 查看magic_quotes_gpc值.0=关闭.1=打开.
get_magic_quotes_runtime(): 查看magic_quotes_runtime值。0=关闭.1=打开.
注意的是没有 set_magic_quotes_gpc()这个函数,就是不能在程序里面设置magic_quotes_gpc的值。
By admin
read more先按这里的文档对服务器系统安全做设置: http://blog.haohtml.com/index.php/archives/3438
对于php.ini的设置有: 1.修改为安全
safe_mode = true
2.禁用一些系统函数
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
3.禁用com组件调用
将 ;com.allow_dcom = true 修改为 com.allow_dcom = false 启用并禁用 4.指定上传文件的临时目录
upload_tmp_dir = “d:\php\upload_tmp”
5.启用特别字符转义功能
magic_quotes_gpc = On
6.关闭错误信息
display_errors=Off
7.对于虚拟主机配置的安全主要有:
ServerAdmin [email protected] DocumentRoot “d:/site/ceshi.papake.net” ServerName ceshi.papake.net DirectoryIndex index.php
#限制在固定的目录里,并授权上传文件临时目录 php_admin_value open_basedir “D:/site/ceshi.papake.net;D:/php/upload_tmp”
Options Indexes MultiViews AllowOverride None order allow,deny Allow from all Options FollowSymLinks Includes
By admin
read more