by 清泉
17. 十二月 2009 11:04
大多数的网站都是基于数据库的动态页面。也就是说你的页面相当于一个从数据库系统(比如MySQL)获得数据的应用程序,解析数据,然后呈现给用户。大多数的数据并不是经常更新,我们使用数据库的原因是可以非常方便的更新数据和内容。
大量过多的数据库连接和查询将会导致服务器过载或瘫痪。每查询一次数据库,脚本就链接一次DBMS,然后DBMS将返回查询的结果。这非常浪费时间和资源,如果频率非常高的话,可能会导致数据库出错。
如何搞定这个问题?有两种方法可以解决这个问题。一个是优化查询,但在本文不讨论这个;另一个最常用的就是使用缓存。
[更多...]
by 清泉
17. 十二月 2009 11:01
/**************************************************************************/
// 函数名: writefile
// 功能: 创建新文件,并写入内容,如果指定文件名已存在,那将直接覆盖
// 参数: $file -- 新文件名
// $source 文件内容
/**************************************************************************/
function writefile($file,$source){
if($fp=fopen($file,'w')){
$filesource=fwrite($fp,$source);
fclose($fp);
return $filesource;
}
else
return false;
}
[更多...]
by 清泉
16. 十二月 2009 21:48
windows下用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。 让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数的一个bug。iconv在转换字符"—"到gb2312时会出错
解决方法很简单,就是在需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后.如下:
以下为引用的内容:
iconv("UTF-8","GB2312//IGNORE",$data)
ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
[更多...]
by 清泉
14. 十二月 2009 20:21
MS对PHP的支持不是太友好,使用微软官方提供的SQLServerDriverForPHP资源包,可以解决PHP读取MSSQL2005过程中遇到的一些问题,(有关,SQLServerDriverForPHP资源的下载,及PHP读取SQL2005数据库的使用方法,可以点击查看相关文章。如:
PHP连接SQL Server 2005,
php sqlserver2005编程,
php sqlserver2005应用编程)但可能因PHP是外家竞争对手,对其的支持也很是有限,在查询数据的时候可能会遇到一些莫名的问题。
如果
www.supidea.com这个表中的myContent字段类型为ntext,直接使用上面的语句,输出的myContent值将为空,这需要对查询语句进行修改,改为“SELECT id,myName,convert(text,myContent) Comments FROM
www.supidea.com”,将其转换成text输出,同时sqlsrv_get_field($supidea,2)需要在sqlsrv_get_field函数调用最后面加入一个参数SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR),标明是SQL2005L转换的字符,也就是变为sqlsrv_get_field($supidea,2,SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR))。
[更多...]
by 清泉
10. 十二月 2009 08:37
看标题有点迷惑吧.我来解释一下,有人可能有这样的需求,
PHPCMS中一般需要显示某个栏目下有多少文章,这时候只要在栏目标签里加一个变量 {$items} 就可以了.但是,如果有父栏目的话,就不行了.子栏目是可以正常显示的.为什么呢?
原来, {$items} 是保存到 $CATEGORY 二维数组的,因为父栏目不保存文章,而是子栏目保存文章,所以,父栏目的 $CATEGORY数组里的 {$items} 是空的.调用不出来.而子栏目保存文章了,所以他的 {$items} 是有值的.可以取到.
粗体是父栏目,下面的是其子栏目.括号中的是栏目下的文章数目.
那么本贴就是解决父栏目文章问题的.
思路是:先把父栏目的所有子栏目循环出来,然后把他们的items加起来.
[更多...]
by 清泉
9. 十二月 2009 00:52
header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端。
标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头
与 HTML 文件之间尚需空一行分隔。有关 HTTP 的详细说明,可以参 RFC 2068 官方文件
(
http://www.w3.org/Protocols/rfc2068/rfc2068)。
在 PHP 中送回 HTML 资料前,需先 传完所有的标头。
[更多...]
by 清泉
8. 十二月 2009 22:16
使用函式 date() 实现
<?php echo $showtime=date("Y-m-d H:i:s");?>
如果是PHP连接MS SQL SERVER,直接输出从MSSQL中读取的时间有可能报Object of class DateTime could not be converted to string in的错误,遇到这么问题,解决办法就是加入SQLSRV_PHPTYPE_STRING( SQLSRV_ENC_CHAR)进行格式化。
如
while ( $row = sqlsrv_fetch( $stmt))
{
echo "Date: ".sqlsrv_get_field( $stmt, 0, SQLSRV_PHPTYPE_STRING( SQLSRV_ENC_CHAR))."\n";
}
[更多...]
by 清泉
8. 十二月 2009 19:36
mssql_affected_rows: 取得最后 query 影响的列数。
mssql_close: 关闭与数据库的连接。
mssql_connect: 连上数据库。
mssql_data_seek: 移动列指针。
mssql_fetch_array: 返回数组资料。
mssql_fetch_field: 取得字段信息。
mssql_fetch_object: 返回类资料。
mssql_fetch_row: 返回单列的各字段。
mssql_field_seek: 配置指针到返回值的某字段。
mssql_free_result: 释放返回占用内存。
mssql_num_fields: 取得返回字段的数目。
mssql_num_rows: 取得返回列的数目。
[更多...]
by 清泉
7. 十二月 2009 13:01
这方面的资料在网络上不太好找,按照上一篇的内容,整理了一下,做了一个可以运行的php + sql server实例好让大家方便
// 以sqlsrv_next_result 函式將批次查詢的結果移往下一筆
sqlsrv_next_result($stmt);
// 取得並顯示第 2 次查詢的結果
echo "查詢 2 的結果:<\br>";
echo "資料已更新:".sqlsrv_rows_affected($stmt)."</br>";
// 以 sqlsrv_next_result 函式將批次查詢的結果移往下一筆
sqlsrv_next_result($stmt);
// 取得並顯示第 3 次查詢的結果
echo "查詢 3 的結果:<\br>";
[更多...]
by 清泉
7. 十二月 2009 12:56
SQL Server 2005 Driver for PHP 提供了 24 個可以用在 PHP 程式的函式,這些函式名稱都是 sqlsrv_ 開頭。而本文即將說明這些函式如何協助 PHP 程式存取 Microsoft SQL Server 資料庫。此外,本文附上一段5分鐘的影片,說明以 SQL Server 2005 Driver for PHP 的函式所編寫的 AdventureWorks Product Reviews 應用範例。
SQL Server 2005 Driver for PHP 提高了 PHP 程式存取 Microsoft SQL Server 的透通性,尤其是較新的 SQL Server 2005、或最新的 SQL Server 2008。目前的 SQL Server 2005 Driver for PHP 1.0 提供了 24 個函式,供作 PHP 程式存取 SQL Server 之用。雖然本文花了相當的篇幅及例子在說明這些函式,但依然無法盡數說完所有的函式;就算已說明的函式,也無法完全解說所有細節。
因此完整的說明,需請您參閱微軟提供的文件(SQL Server Driver for PHP Documentation);除了可於微軟網站查閱,下載回來的 SQL Server 2005 Driver for PHP 檔案(SQLServerDriverForPHP.EXE),也包含內容相同的線上說明檔(SQLServerDriverForPHP_1.0.8204.chm)。
[更多...]
by 清泉
7. 十二月 2009 02:51
MSsql歧视MYsql,说:”你Y不听话,敢自己单干,还抢我市场,老子不跟你交往了。“
MYsql:“你TMD是个流氓,搞垄断,欺负人不说,还不让大家看清楚你肚子里的玩意。”
这样,MYsql和MSsql天天干仗,在干仗的时候。双方的路都给搞坏了,从mysql到mssql没有直通的路了,痛苦的就是老百姓。
这个事情,被文本看到了。嗯,不错是时候该大力推广我们文本的知名度了。于是,文本从MYsql和MSsql之间修了一条路。想从mysql到mssql,可以通过文本来做传递,从mysql先到文本,在从文本到mssql。中间过程,文本收取了一点点时间做为中间费用。
因为MSsql一直耍流氓,耍无赖,跟兄弟sybase闹分家之后,混了一个不错的地位。有一天它说:“我是软件行业的老大,我要兼容所有的数据库系统的数据。”于是他开发了一个叫ODBC的玩意。在这期间mysql一直都没有跟MSsql和好的意思。所以,MSsql就一直没有兼容mysql的驱动。
[更多...]
by 清泉
7. 十二月 2009 01:38
在Windows操作系统上配置过PHP环境的人应该都清楚,配置的时候若需要配置一个PHP的扩展,此扩展需要将相关的dll文件全部复制到PHP的扩展目录里面,然后通过修改php.ini来实现PHP的扩展,在php.ini里面需要指明扩展路径,一般情况是在最末尾添加一行:
extension_dir="" ""内的内容填写PHP的扩展目录名,约定俗成一般是放在PHP目录下的一个ext文件夹内,当然可以将目录配置到任何地方(没有测试过)。把上图解压开的dll文件拷贝到extension_dir设置的扩展目录里面。
添加的两行内容为:
extension=php_sqlsrv_ts.dll
extension=php_sqlsrv.dll
注意=号右边是解开过后的扩展的两个驱动的文件名,必须保证此文件在配置好的扩展目录内,而且需要注意此处最初不需要带“;”。【*:在php.ini文件里面,首部分号的含义代表行注释,如果有分号的时候,服务器在读取配置的时候会略过分号这一行不去读取相关内容,只有没有加分号的行才会被服务器读取。】
这里解释一下,两个驱动程序的区别在于,php_sqlsrv_ts.dll是线程安全的驱动,如果服务器本身的环境是使用的php5ts.dll,就是用这个驱动;php_sqlsrv.dll不是线程 安全的,这种情况下,服务器运行PHP应该加载的是php5.dll [更多...]