当前位置: 编程技术>php
本页文章导读:
▪php heredoc和phpwind的模板技术使用方法小结
在PHP的文档中,只是提到了echo可以使用如下命令输出多行字符串(而且其中的变量被自动替换): PHP代码 代码如下:echo <<<END This uses the "here document" syntax to output .........
▪WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
第一: 装http服务器apache
apache.1.jpg (43.95 KB)
2007-9-26 17:36
apache.2.jpg (55.15 KB)
2007-9-26 17:36
apache.3.jpg (64.33 KB)
2007-9-26 17:36
apache.4.jpg (41.78 KB)
2007-9-26 17:36
apache.5.jpg (45.91 KB)
2007-9-26 17:36
apac.........
▪Mysql的GROUP_CONCAT()函数使用方法
语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_courses,并填.........
[1]php heredoc和phpwind的模板技术使用方法小结
来源: 互联网 发布时间: 2013-11-30
在PHP的文档中,只是提到了echo可以使用如下命令输出多行字符串(而且其中的变量被自动替换):
PHP代码
echo <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;
上面的END结束符可以自己规定,在Phpwind,使用了“EOT”来结束。但是需要注意的是,这个END必须是在一行的开头才能有效,这其实是Heredoc技术的一个局限性(因为heredoc可以自定义结束符,所以引入了这个问题),在下面会提到。
phpwind的模板文件一般存放在templatewind目录下面,在BBS目录中,使用require语句包含这个模板文件。其实这个模板文件是作为对应的PHP文件的一部分执行的,所以就不需要像PHPLib Template那样需要进行模板解析,然后再执行的过程。
为了让heredoc的内容能被DreamWeaver这样的编辑器正确识别,以实现“所见即所得的”的网页设计,需要在heredoc中增加注释,示例文件如下:
PHP代码
<!--
<?php
print <<<EOT
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
</head>
<body>
<!--
$name = '浅水游';
print <<<EOT
-->
Hello,$name!
<!--
EOT
print <<<EOT
-->
</body>
</html>
<!--
EOT;
?>
-->
这样的模板文件,其实就是一个标准的,可以执行的PHP文件。但是,这样的PHP文件,其HTML样式在DreamWeaver中可以正确的显示出来,所有的PHP代码会被看做HTML注释,而且在输出的时候,不会输出出来。比如,上面的文件在DreamWeaver中,被显示成:
PHP代码
Hello,$name!
这样,在设计页面的时候,我们就可以借助DW的可视化界面,进行一些界面的修改,美化等工作。尽管没有实现完全的代码和HTML的分离,但至少提供了一种辅助性的设计手段。
PHP代码
代码如下:
echo <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;
上面的END结束符可以自己规定,在Phpwind,使用了“EOT”来结束。但是需要注意的是,这个END必须是在一行的开头才能有效,这其实是Heredoc技术的一个局限性(因为heredoc可以自定义结束符,所以引入了这个问题),在下面会提到。
phpwind的模板文件一般存放在templatewind目录下面,在BBS目录中,使用require语句包含这个模板文件。其实这个模板文件是作为对应的PHP文件的一部分执行的,所以就不需要像PHPLib Template那样需要进行模板解析,然后再执行的过程。
为了让heredoc的内容能被DreamWeaver这样的编辑器正确识别,以实现“所见即所得的”的网页设计,需要在heredoc中增加注释,示例文件如下:
PHP代码
代码如下:
<!--
<?php
print <<<EOT
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
</head>
<body>
<!--
$name = '浅水游';
print <<<EOT
-->
Hello,$name!
<!--
EOT
print <<<EOT
-->
</body>
</html>
<!--
EOT;
?>
-->
这样的模板文件,其实就是一个标准的,可以执行的PHP文件。但是,这样的PHP文件,其HTML样式在DreamWeaver中可以正确的显示出来,所有的PHP代码会被看做HTML注释,而且在输出的时候,不会输出出来。比如,上面的文件在DreamWeaver中,被显示成:
PHP代码
代码如下:
Hello,$name!
这样,在设计页面的时候,我们就可以借助DW的可视化界面,进行一些界面的修改,美化等工作。尽管没有实现完全的代码和HTML的分离,但至少提供了一种辅助性的设计手段。
[2]WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
来源: 互联网 发布时间: 2013-11-30
第一: 装http服务器apache
apache安装完成,如果出现apache端口被占用的情况,请关闭你的迅雷,或者某些杀毒软件!
第二步:安装PHP:
1)、将php-5.2.4-Win32.zip压缩包解压,然后复制到C:\并更名为C:\PHP5
2)、拷贝C:\PHP5\php.ini-dist文件到X:\WINNT下,并更名为php.ini
3)、(方法1)打开php.ini进行参数修改,把extension_dir设置为
extension_dir = "C:/php5/ext"
(方法2)把php5下面的*.dll和ext下的*.dll文件复制到windows下的system32下面!(本人用的是这种)
第三步:加载php模块:
设置网站根目录:
在apache的httpd.conf文件里,设置ServerRoot(服务器根,也就是apache的安装目录)
ServerRoot "F:\php"
设置DocumentRoot(网站目录,也就是你机器上那些让人浏览的网页所在目录)比如:
DocumentRoot "F:\php"
修改:(选择性)设置默然首页
<IfModule dir_module>
DirectoryIndex phpinfo.php index.html
</IfModule>
用模块方式安装!
在文件最后加入
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-httpd-php .php
用CGI方式安装:
同上面的
在ScriptAlias段,增加以下行
ScriptAlias /PHP5/ “C:/php/”
在AddType段,增加以下行
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php5/php-cgi.exe“
第四步:
拷贝C:\PHP5\php.ini-dist文件到X:\WINNT下,并更名为php.ini
在php.ini配置文件中选择运行PHP时需要加载的模块。
[DATE] 下修改;date.timezone =为date.timezone =PRC
将php.ini文件中下面格式的行前的;去掉以加载相应的模块,注:加载模块不正确将会出错
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
…这些自己加!
测试php程序:<? phpinfo() ?>保存在f盘为phpinfo.php在浏览器输入http://localhost:加你的端口号/就OK了!
第五步:
安装mysql数据库!
一直往下安装直到
如果用uft8则选择utf8用gb2312则选择gb2312!‘
由于空间有限某些图片没有上传上来!
最后完成!
第6步:
安装ZendOptimizer
按照提示继续安装直到完成为止!
最后配置phpmyadim:
解压文件放置到网站根目录下面:
修改libraries下的config.default.php并且重命名为config.inc.php保存在根目录下面修改如下:
$cfg['Servers'][$i]['auth_type'] = 'config'; 修改为
$cfg['Servers'][$i]['auth_type'] = 'cookies';
$cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';
$cfg['DefaultCharset'] = 'utf8';
配置基本完成!这是本人粗略写的,有错误的地方还希望大家提出来,我会第一时间修改订正!
可以用QQ或者在论坛留言!
apache安装完成,如果出现apache端口被占用的情况,请关闭你的迅雷,或者某些杀毒软件!
第二步:安装PHP:
1)、将php-5.2.4-Win32.zip压缩包解压,然后复制到C:\并更名为C:\PHP5
2)、拷贝C:\PHP5\php.ini-dist文件到X:\WINNT下,并更名为php.ini
3)、(方法1)打开php.ini进行参数修改,把extension_dir设置为
extension_dir = "C:/php5/ext"
(方法2)把php5下面的*.dll和ext下的*.dll文件复制到windows下的system32下面!(本人用的是这种)
第三步:加载php模块:
设置网站根目录:
在apache的httpd.conf文件里,设置ServerRoot(服务器根,也就是apache的安装目录)
ServerRoot "F:\php"
设置DocumentRoot(网站目录,也就是你机器上那些让人浏览的网页所在目录)比如:
DocumentRoot "F:\php"
修改:(选择性)设置默然首页
<IfModule dir_module>
DirectoryIndex phpinfo.php index.html
</IfModule>
用模块方式安装!
在文件最后加入
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-httpd-php .php
用CGI方式安装:
同上面的
在ScriptAlias段,增加以下行
ScriptAlias /PHP5/ “C:/php/”
在AddType段,增加以下行
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php5/php-cgi.exe“
第四步:
拷贝C:\PHP5\php.ini-dist文件到X:\WINNT下,并更名为php.ini
在php.ini配置文件中选择运行PHP时需要加载的模块。
[DATE] 下修改;date.timezone =为date.timezone =PRC
将php.ini文件中下面格式的行前的;去掉以加载相应的模块,注:加载模块不正确将会出错
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
…这些自己加!
测试php程序:<? phpinfo() ?>保存在f盘为phpinfo.php在浏览器输入http://localhost:加你的端口号/就OK了!
第五步:
安装mysql数据库!
一直往下安装直到
如果用uft8则选择utf8用gb2312则选择gb2312!‘
由于空间有限某些图片没有上传上来!
最后完成!
第6步:
安装ZendOptimizer
按照提示继续安装直到完成为止!
最后配置phpmyadim:
解压文件放置到网站根目录下面:
修改libraries下的config.default.php并且重命名为config.inc.php保存在根目录下面修改如下:
$cfg['Servers'][$i]['auth_type'] = 'config'; 修改为
$cfg['Servers'][$i]['auth_type'] = 'cookies';
$cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';
$cfg['DefaultCharset'] = 'utf8';
配置基本完成!这是本人粗略写的,有错误的地方还希望大家提出来,我会第一时间修改订正!
可以用QQ或者在论坛留言!
[3]Mysql的GROUP_CONCAT()函数使用方法
来源: 互联网 发布时间: 2013-11-30
语法:
GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])
下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据。
SQL代码
CREATE TABLE student_courses (
student_id INT UNSIGNED NOT NULL,
courses_id INT UNSIGNED NOT NULL,
KEY(student_id)
);
INSERT INTO student_courses VALUES (1, 1), (1, 2), (2, 3), (2, 4), (2, 5);
若要查找学生ID为2所选的课程,则使用下面这条SQL:
SQL代码
mysql> SELECT student_id, courses_id FROM student_courses WHERE student_id=2;
+------------+------------+
| student_id | courses_id |
+------------+------------+
| 2 | 3 |
| 2 | 4 |
| 2 | 5 |
+------------+------------+
3 rows IN SET (0.00 sec)
输出结果有3条记录,说明学生ID为2的学生选了3、4、5这3门课程。
放在PHP里,必须用一个循环才能取到这3条记录,如下所示:
PHP代码
foreach ($pdo->query("SELECT student_id, courses_id FROM student_courses WHERE student_id=2") as $row) {
$result[] = $row['courses_id'];
}
而如果采用GROUP_CONCAT()函数和GROUP BY语句就显得非常简单了,如下所示:
SQL代码
mysql> SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
+------------+---------+
| student_id | courses |
+------------+---------+
| 2 | 3,4,5 |
+------------+---------+
1 row IN SET (0.00 sec)
这样php里处理就简单了:
PHP代码
$row = $pdo->query("SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id");
$result = explode(',', $row['courses']);
分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,例如:
SQL代码
SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排:
SQL代码
SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])
下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据。
SQL代码
代码如下:
CREATE TABLE student_courses (
student_id INT UNSIGNED NOT NULL,
courses_id INT UNSIGNED NOT NULL,
KEY(student_id)
);
INSERT INTO student_courses VALUES (1, 1), (1, 2), (2, 3), (2, 4), (2, 5);
若要查找学生ID为2所选的课程,则使用下面这条SQL:
SQL代码
代码如下:
mysql> SELECT student_id, courses_id FROM student_courses WHERE student_id=2;
+------------+------------+
| student_id | courses_id |
+------------+------------+
| 2 | 3 |
| 2 | 4 |
| 2 | 5 |
+------------+------------+
3 rows IN SET (0.00 sec)
输出结果有3条记录,说明学生ID为2的学生选了3、4、5这3门课程。
放在PHP里,必须用一个循环才能取到这3条记录,如下所示:
PHP代码
代码如下:
foreach ($pdo->query("SELECT student_id, courses_id FROM student_courses WHERE student_id=2") as $row) {
$result[] = $row['courses_id'];
}
而如果采用GROUP_CONCAT()函数和GROUP BY语句就显得非常简单了,如下所示:
SQL代码
代码如下:
mysql> SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
+------------+---------+
| student_id | courses |
+------------+---------+
| 2 | 3,4,5 |
+------------+---------+
1 row IN SET (0.00 sec)
这样php里处理就简单了:
PHP代码
代码如下:
$row = $pdo->query("SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id");
$result = explode(',', $row['courses']);
分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,例如:
SQL代码
代码如下:
SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排:
SQL代码
代码如下:
SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
最新技术文章: