PHP编程中问题集锦
1. Win32下apache2用get方法传递中文参数会出错
test.php?a=你好&b=你也好
传递参数是会导致一个内部错误
解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好)
2. win32下的session不能正常工作
php.ini默认的session.save_path = /tmp 这显然是linux下的配置,win32下php无法读写session文件导致session无法使用,把它改成一个绝对路径就可以了,
例如session.save_path = c:\windows\temp
3. include和require的区别
两
者没有太大的区别,如果要包含的文件不存在,
include提示notice,然后继续执行下面的语句,require提示致命错误并且退出,据我测试,win32平台下它们都是先包含后执行,所以
被包含文件里最好不要再有include或require语句,这样会造成目录混乱。
4. isset()和empty()的区别
两
者都是测试变量用的。但是
isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空。如果一个变量没被赋值就引用在php里是被允许的,但会有
notice提示。如果一个变量被赋空值,$foo=""或者$foo=0或者
$foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。
要注销一个变量,可以用 unset($foo)或者$foo=NULL。
5. mysql查询语句包含有关键字
php查询mysql的时候,有时候mysql表名或者列名会有关键字。这时候查询会有错误。例如表名是order,查询时候会出错。简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别,
这样就不会因为误用关键字而出现错误。
例如select * from `order` 。
6. 数组非数字键名引号的必要性
PHP
会把数组中非数字键名没有引号引起来的键名当作是常量去获取, 当找不到的时候, 抛出一个NOTICE(Notice: Use of
undefined constant ......), 然后再根据”常量名”生成一个字符串, 数组中的非数字键的键名一定要有引号,
在字符串变量替换的时候, 写引号会导致错误, 虽然这种错误提示可以通过 error_reporting()进行屏蔽,但好的程序,自适应的代码是不应该通过这种方法进行伪装的。标准写法:
$array[1] = 'abc';
$array['key'] = 2; Bad: $array[key] = 2;
$string = "variable value is {$array['key']}"
另:在非数字键名不加引号的生成OPCODE中明显多一条指令:FETCH_CONSTANT
7. 使HTML/PHP格式的字符串如何照原样显示
如:
<
相关文档:
最近在写一个 前台基于 javascript. 的客户端 服务器端PHP 的分析系统。
原先计划使用XML为数据交互基础 但是最终还是选用较轻量级的JSON最为数据交互基础。
首先介绍json的格式
json 说简单其实是一种数据格式 更简单的可以看做简单的数组。
实例 (一)
<script>
var jsonArray=[
......
准备:
lighttpd-1.4.15.tar.gz
php-4.4.2.tar.gz
mysql-5.0.20a.tar.gz
开始:
1 编译安装lighttpd
# tar zxvf lighttpd-1.4.15.tar.gz
# cd lighttpd-1.4.15
# ls
# ./configure --prefix=/usr/local/lighttpd //此部无法编译时提示安装prce-devel
#&nbs ......
Java中的startsWith和endsWith方法,在filter的功能实现中很方便,PHP可以用strncmp()
实现startsWith,但是无法实现endsWith,有些人会用正则来实现,但大多数人都不喜欢正则表达式的操作。
这里我通过一个叫substr_compare的方法实现(同时他也能实现sta ......
我在上一篇文章中讲到使用javascript做集成表单验证的方法,对于客户端验证已经足够,但好的表单验证应同时在客户端和服务器端进行——这正是写本文的目的。
如果采用一般的验证方法应该怎样写呢?
if ($_POST['some'] 不满足 condition) {
& ......